Java小结.docx
《Java小结.docx》由会员分享,可在线阅读,更多相关《Java小结.docx(10页珍藏版)》请在冰豆网上搜索。
Java小结
2015—04—03
1、程序:
程序可以看作对一系列动作的执行过程的描述。
2、什么是ssh?
答:
集成SSH框架的系统从职责上分为四层:
表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。
具体做法是:
用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(DataAccessObjects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
3、JDK是什么?
JAVA开发工具包
4、JDK和JreJDK包含JRE,JRE里包含JVM,JRE是运行JAVA,JDK是开发JAVA
5、一个workspace里做好只放一个项目和一个tomcat
6、一个文件里可以写多个类(class),类里面也可以写类,类中类可以是匿名的,调用类中类只需要最外面的类点上类中类
7、XXjava1.5到1.7的新特性
答:
一、jdk1.5新特性
1.泛型
2.foreach
3.自动拆箱装箱
4.枚举
5.静态导入(Static import)
6.元数据(Metadata)
7.线程池
8.Java Generics
二、jdk1.6新特性
1.Desktop类和SystemTray类
2.使用JAXB2来实现对象与XML之间的映射
3.StAX
4.使用Compiler API
5.轻量级Http Server API
6.插入式注解处理API(Pluggable Annotation Processing API)
7.用Console开发控制台程序
8.对脚本语言的支持
9.Common Annotations
三、jdk1.7新特性
1 对集合类的语言支持;
2 自动资源管理;
3 改进的通用实例创建类型推断;
4 数字字面量下划线支持;
5 switch中使用string;
6 二进制字面量;
7 简化可变参数方法调用。
8、怎么配置环境变量
9,final和finally?
fianl修饰变量,方法和类,被final修饰的变量叫常量,被final修饰的类没有子类,被final修饰的方法不能被重写。
10、静态的只能访问静态的
11、变量的作用域成员变量和局部变量成员变量有初始值局部变量方法有效被static修饰的变量可以全局访问,static不可以访问非static,非static可以访问static
全局变量可以被修饰符修饰局部变量除了可被final修饰外不可以再被其他任何修饰符修饰被final修饰的量必须初始化;
12、怎么不用第三方变量交换
方法一
a=a+b;
b=a-b;
a=a-b;
方法二:
a=a*b;
b=a/b;
a=a/b;
方法三:
a=a^b;
b=a^b;
a=a^b;
13、48个关键字?
“==”和equal的区别?
“!
=”能够判断字符串么?
答:
48个关键字
+访问控制
private私有,protected保护,public共享.
+类、方法和变量修饰符
abstract摘要,class类,extends扩允,
final结局,implements工具,interface接口,
native本地,new新,static静态,
strictfp,synchronized同步,transient短暂,
volatile易失.
+程序控制语句
break,continue,return,do,while,if,else,
for,instanceof,switch,case,default,
+错误处理
catch捕获,finally最后,throw投试,
throws投试,try尝试
+包相关
import输入,package包.
+基本类型
boolean布尔型,byte字节型,char字符型,double双精度,
float浮点,int整型,long长整型,short短整型
+变量引用
super特殊,this这个,void无值
除了这48个关键字以外,还有3个语法保留字:
null空,true真,false假.
java中equals方法和“==”的区别:
equals方法是java.lang.Object类的方法。
有两种用法说明:
(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
比如:
Strings1,s2,s3="abc",s4="abc";
s1=newString("abc");
s2=newString("abc");
那么:
s1==s2是false//两个变量的内存地址不一样,也就是说它们指向的对象不一样,
故不相等。
s1.equals(s2)是true//两个变量的所包含的内容是abc,故相等。
注意
(1):
如果:
StringBuffers1=newStringBuffer("a");
StringBuffers2=newStringBuffer("a");
结果:
s1.equals(s2)//是false
解释:
StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
而Object类中的equals方法是用来比较“地址”的,所以等于false.
注意
(2):
对于s3和s4来说,有一点不一样要引起注意,由于s3和s4是两个字符
串常量所生成的变量,其中所存放的内存地址是相等的,
所以s3==s4是true(即使没有s3=s4这样一个赋值语句)
(2)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
比如:
classA
{
Aobj1=newA();
Aobj2=newA();
}
那么:
obj1==obj2是false
obj1.equals(obj2)是false
但是如加上这样一句:
obj1=obj2;
那么obj1==obj2是true
obj1.equals(obj2)是true
总之:
equals方法对于字符串来说是比较内容的,而对于非字符串来说是比较
其指向的对象是否相同的。
==比较符也是比较指向的对象是否相同的也就是对象在对内存中的的首地址。
String类中重新定义了equals这个方法,而且比较的是值,而不是地址。
所以是true。
关于equals与==的区别从以下几个方面来说:
(1)如果是基本类型比较,那么只能用==来比较,不能用equals
比如:
publicclassTestEquals{
publicstaticvoidmain(String[]args)
{
inta=3;
intb=4;
intc=3;
System.out.println(a==b);//结果是false
System.out.println(a==c);//结果是true
System.out.println(a.equals(c));//错误,编译不能通过,equals方法
//不能运用与基本类型的比较
}
}
(2)对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。
比如:
publicclassTestEquals{
publicstaticvoidmain(String[]args)
{Integern1=newInteger(30);
Integern2=newInteger(30);
Integern3=newInteger(31);
System.out.println(n1==n2);//结果是false两个不同的Integer对象,故其地址不同,
System.out.println(n1==n3);//那么不管是newInteger(30)还是newInteger(31)结果都显示false
System.out.println(n1.equals(n2));//结果是true根据jdk文档中的说明,n1与n2指向的对象中的内容是相等的,都是30,故equals比较后结果是true
System.out.println(n1.equals(n3));//结果是false因对象内容不一样,一个是30一个是31
}
}
这是Integer的实例,如果是其他的比如Double、Character、Float等也一样。
(3)注意:
对于String(字符串)、StringBuffer(线程安全的可变字符序列)、StringBuilder(可变字符序列)这三个类作进一步的说明。
(a)首先,介绍String的用法,请看下面的实例:
publicclassTestEquals{
publicstaticvoidmain(String[]args){
Strings1="123";
Strings2="123";
Strings3="abc";
Strings4=newString("123");
Strings5=newString("123");
Strings6=newString("abc");
System.out.println(s1==s2);//
(1)true
System.out.println(s1.equals(s2));//
(2)true
System.out.println(s1==s3);//(3)flase
System.out.println(s1.equals(s3));//(4)flase
System.out.println(s4==s5);//(5)flase
System.out.println(s4.equals(s5));//(6)true
System.out.println(s4==s6);//(7)flase
System.out.println(s4.equals(s6));//(8)flase
System.out.println(s1==s4);//(9)false
System.out.println(s1.equals(s4));//(10)true
}
}
答案解释:
s1与s2分别指向由字符串常量”123”创建的对象,在常量池中,只有一个对象,内容为123,有两个引用s1和s2指向这个对象,故这两个引用变量所指向的地址是相同的,因而
(1)处的运行结果为true,又因为s1.equals(s2)是比较s1和s2所指向的对象的内容是否相等,而我们知道这两个对象的内容都是字符串常量”123”,故标记
(2)处的运行结果是true。
用同样的方法分析,s1和s3所指向的对象不一样,内容也不一样,故标记(3)和(4)处运行结果是false。
再看看s4和s5,这两个引用变量所指向的对象的内容都是一样的(内容都是123),但是这两个对象是用new操作符创建处类的,是在内存中分配两块空间给这两个对象的,因而这两个对象的内存地址不一样,故事两个不同的对象,标记(5)处的s4==s5运行结果为false,但是内容一样,故标记(6)处的s4.equals(s5)运行结果为true。
同理,s4和s6所指向的对象地址不同,内容也不相同。
故标记(7)(8)处运行结果为false。
s1和s4分别指向两个不同的对象(之所以这样称呼,是因为这两个对象在内存中的地址不相同,故而对象不相同),故标记为(9)处的s1==s4运行结果为false,而标记为(10)处的s1.equals(s4)运行结果疑问:
乍一看结果,有点惊讶,为什么不是true呢,不是说equals方法是比较内容的吗?
解释:
不错,如果在新类中被覆盖了equals方法,就可以用来比较内容的。
但是在上面的例子中类Value并没有覆盖Object中的equals方法,而是继承了该方法,因此它就是被用来比较地址的,又v1和v2的所指向的对象不相同,故标记
(1)处的v1.equals(v2)运行结果为false,标记为
(2)处的v1==v2运行结果也为false。
14、JAVA常用的5个包?
(XX)
2015—04—08
1、三种结构:
顺序结构,选择结构,循环结构
2、第一:
项目名称首字母大写(Ban27)
第二:
建包包名一般采用域名倒置
com.baidu.模块名
第三:
建类首字母大写Object类时所有类的父类,也就是说,所有类直接或间接继承Object类
3、所有类型和String类型相加,结果为String型
4、if后面没有大括号,只作用后面的第一句。
如果此时的if有else,那么if后面只能有一条语句。
5、在同一个作用域里,变量名不可以相同
6、switch结构在1.6版本之前,只支持byteshortintchar和枚举类型但是1.7版本之后支持字符串String
7、break跳出循环体,执行循环体外面的代码
continue跳出本次循环,执行下一次循环
8、用for和while组合打印99乘法表
9、定义一个数组int类型,求出数组中的最大值和最小值
10、1、J2SE是所有基于Java语言开发的基础,该版本主要用于开发桌面应用程序。
2、J2EE作为一个企业版本,主要是给出一个开发企业级应用架构的解决方案,同时给出了在这个架构中相关组件以供开发人员使用,例如我们连接数据库所用的JDBC。
3、J2ME则是针对移动设备,嵌入式系统的开发。