Java中this关键字的几种用法[转]

Posted by & filed under Uncategorized.

1. 当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己) 如:public class Hello { String s = “Hello”; public Hello(String s) { System.out.println(“s = ” + s); System.out.println(“1 -> this.s = ” + this.s); this.s = s;//把参数值赋给成员变量,成员变量的值改变 System.out.println(“2 -> this.s = ” + this.s); } public static void main(String[] args) { Hello x = new Hello(“HelloWorld!”); System.out.println(“s=” + x.s);//验证成员变量值的改变 } } 结果为:s = HelloWorld! 1 -> this.s = Hello 2 -> this.s = HelloWorld! s=HelloWorld! 在这个例子中,构造函数Hello中,参数s与类Hello的成员变量s同名,这时如果直接对s进行操作则是对参数s进行操作。若要对类Hello的成员变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果; Read more […]

二元查找树转变成排序的双向链表—算法思想及java实现[转]

Posted by & filed under Uncategorized.

把二元查找树转变成排序的双向链表(树)(来自July大神的《算法面试100题》,果断抱大腿呀) 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / | 6 14 / | / | 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 二叉查找树的特点:任意节点的左子树都要小于当前节点;右子树都要大于当前节点。 特点:查询某个值,需要的时间复杂度为O(lgN)。 现在要求将其由树状结构改造成线性结构的双向链表,感觉重点在于,获得当前节点左子树范围内最右节点(也是左子树最大值节点),以及右子树范围内最左节点(也是右子树最小值节点),然后,调整这两个节点与当前节点左右顺序。以本题为例,就是要调整8、10之间的关系,和12、10之间的关系(8的右节点为10,10的左节点为8;12的左节点为10,10的右节点为12)。 当然,这种三层关系的树看起来很简单,如果层次多了,就需要分析,如何将其中的共性抽象出来。 也是最近两天才看到July大神的这个帖子,目前还没看到答案那块。不过他的提示,结构体,猜测他用的是C++实现的。C++自己也忘的差不多了,这边就用Java实现下。 数据结构,依然沿用July的value,left,right方式。 算法思路: 1. Read more […]

struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现[转]

Posted by & filed under Uncategorized.

今天我们来 谈一下struts2+hibernate 实现B2C电子商务网站的登录 、注册中验证码的实现   下边只在注册中实现   1、首先是在常用软件下载Action中写出生成验证码所需的方法(下边是在MemberAction.java中写)   [java]   package www.csdn.dbshop.action;   import org.apache.struts2.ServletActionContext;   import www.csdn.dbshop.domain.Admin;   import www.csdn.dbshop.domain.Member;   import www.csdn.dbshop.service.BaseService;   import www.csdn.dbshop.service.MemberService;   import www.csdn.dbshop.service.impl.BaseServiceImpl;   import www.csdn.dbshop.service.impl.MemberServiceImpl;   import www.csdn.dbshop.util.Pagination;   import www.csdn.dbshop.util.StringUtil;   import Read more […]

分享学习JAVA的几点心得体会[转]

Posted by & filed under Uncategorized.

Java是近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如“屠龙刀”、“倚天剑”。Java是一个平台,下面介绍初学者学习JAVA的六大办法。 1.欲速则不达 初学者请不要被新技术迷惑,先把基础学扎实。 JAVA私塾的基础入门教材完全是老师自已编写,配合有视频讲解,大家可以免费索取,并不是它说了多少知识,多少api.它只说了更多的“基础知识” 2.要扎扎实实 一步一个脚印的逐步学习,不要想着一步登天。给自己定一个学习流程,按照流程学习。不要看到大家都在学ejb了,就去学ejb.发现大家又在讨论struts,又放下EJB去学struts.浮躁的人永远学不到什么东西。 3.多查API 它是Java编程的基本方法,也是编程过程中所不断利用的资源。Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。对于所接触到的类,方法,都去仔细去阅读文档的说明,再用自己编写的实例去此时一下。 4.看再多的书是学不全脚本的,要多实践 学习脚本最好的方法之一就是多练习;不要只看不练,一定要把书上的例子亲手敲到电脑上实践,千万不要照抄,更不要复制粘贴; Read more […]

java枚举[转]

Posted by & filed under Uncategorized.

1. 什么是枚举?枚举就是用来存放一组固定的常量。 2. 枚举有什么作用?一些程序在运行时,它需要的数据不能是任意的,而必须是一定范围内的值;例如性别 男和女。 [java] view plaincopyprint? public enum Gender{ 男, 女; } public static void main(String[] args) { // TODO Auto-generated method stub Gender gender=Gender.男; switch(gender){ case 男: System.out.println(“性别是男的”); break; case 女: System.out.println(“性别是女的”); break; default: System.out.println(“枚举没有这个值”); break; Read more […]

[转]JVM内存管理:内存区域和内存泄漏

Posted by & filed under Uncategorized.

之前对Java内存管理一直不是很了解,只是知道Java和C/C++对比有垃圾回收机制。在开发过程中遇到大文件读写问题,没拆分文件的情况下内存居高不下。所以借机会了解了下JVM内存管理。通过转载http://hllvm.group.iteye.com/group/wiki/2857-JVM文章学习和备忘内存区域划分和内存泄漏。 VM运行时数据区域 JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途、创建和销毁时间。根据《Java虚拟机规范(第二版)》(下文称VM Spec)的规定,JVM包括下列几个运行时数据区域: 1.程序计数器(Program Counter Register): 每一个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令,对于非Native方法,这个区域记录的是正在执行的VM原语的地址,如果正在执行的是Natvie方法,这个区域则为空(undefined)。此内存区域是唯一一个在VM Read more […]

[转]提高日食使用效率

Posted by & filed under Uncategorized.

编辑代码常用快捷键 格式化代码的快捷键 Ctrl + Shift + F 格式化缩进的快捷键是 Ctrl + I,只能对选中的文本进行缩进 删除一行的快捷键是 Ctrl + D 当前窗口最大化最小化切换 Ctrl + M 转到最后进行修改的位置 Ctrl + Q 快速查找选中的字符 Ctrl + K(向下) Ctrl + Shift + K(向上) 光标放到一个括号,切换到另一个成对的括号 Ctrl + Shirt + P 在编辑过的位置进行切换 Alt + 左右方向键 阅读代码常用的快捷键 F3不解释(一些人喜欢用Ctrl + 鼠标左键) 选中方法或者变量 Ctrl + Alt + H,查找在哪些地方调用,快速阅读代码和评估代码修改必须要用到的 继承关系 F4,了解代码的框架 快速查找函数和变量 Read more […]

DBCP连接池的简单使用及连接池基本概念和作用

Posted by & filed under Uncategorized.

基本概念和作用: 为数据库连接请求建立一个缓冲机制,预先在缓冲池中放入一定数量的链接,但请求连接时直接从池中取,用完后再放回池中。 池子的魅力在于能通过设置最大连接数量来防止无休止的数据库连接请求、监视链接数量,使用情况。 这些可以作为测试、管理及性能调优的依据。 DBCP连接池使用代码示例:

关于流的概念及字节流的使用[转]

Posted by & filed under Uncategorized.

1.流按照方向分:输入流,输出流。流的方向以内存作为参照物。 如果从数据源中将数据读取到内存叫输入流,也叫读取流。 如果将内存中的数据写入到数据源,叫输出流,也叫写入流。 2.流按照类型分 :字节流、字符流、对象流。 在数据传输的底层部分,所有的数据都以二进制方式传输。所以真正的流只有字节流。至于字符流和对象流是为了方便程序员更好的对字符串和对象进行操作。所以在字节流基础上作了一层包装,简化了这些操作。 InputStream 是读取字节流的父类。该类是抽象类,提供read()抽象方法。每个子类根据自己数据源的特点分别 重写read()。达到相同的行为不同的实现的效果。满足开闭原则。 3.流操作步骤:1.建立流。2.操作流。3.关闭流 读取文本文件首选字符流,但读取音频、视频、图片这样的二进制文件,只能用字节流 流使用完成后,一定要关闭,否则,不但浪费系统资源,而且写入流有可能写不进文件。 字节流的使用示例: 读取流: Read more […]

Java 动态生成多叉树[转]

Posted by & filed under Uncategorized.