1.java四大特性:抽象、继承、封装,多态
构造函数:
http://blog.csdn.net/qq_33642117/article/details/51909346
2.java数据基本类型:byte short int long double float char boolean,
包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
Integer :整型变量的值在-128-127之间时不会new新的对象,而是直接引用常量池中的Integer对象
,当增形变量的值不在-128-127之间时直接new新对象
public class Test03 { public static void main(String[] args) { Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150; System.out.println(f1 == f2);//结果为true System.out.println(f3 == f4);//结果为false } }
3.静态代码块:静态代码块在类加载时执行,且只执行一次
ps: 在new对象之前加载 例:
public class StaticTest { public static void main(String[] args){ new Test1(); new Test1(); } } class Test1{ public Test1(){ System.out.println("Test1构造方法"); } static{ System.out.println("我是静态代码块,先执行我!!"); } }
执行结果
我是静态代码块,先执行我!! Test1构造方法 Test1构造方法
4.jvm内存中栈stack 堆heap 方法区method area
栈:定义基本数据变量,对象引用,函数调用的现场保存
堆:new关键字 创建对象 GC(垃圾收集器管理)的主要区域
方法区和堆都是各个线程共享的内存区域,
String str = new String("hello");
str放在栈中,new的字符串对象放在堆中, hello放在方法区的常量池中
https://www.cnblogs.com/dingyingsi/p/3760730.html
5.StringBuffer与StringBuider区别
StringBuffer支持并发操作,线程安全,适合多线程, 作用:String是不可改变
其属性不可改变,当对String对象操作的时候可能会产生大量的中间字符串对象,造成
因此使用可以改变的StringBuffer
StringBuider 不支持并发操作,线程不安全,不适合多线程,单线程中性能高
https://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html
str.intern() 的作用:会将共享池中的字符串与外部的字符串s进行比较,如果共享池中已经有
与之相等的字符串,则不会将外部的字符串放入共享池,返回的也是共享池中的
字符串,如果不同则将外部的字符串放入共享池中,并返回其字符串的句柄
-------这样做的好处就是节省空间。
//常量池中本来就不含有jva字符,所以new的jva会放入常量池,属于同一个对象,返回true String s1 = new StringBuilder("j").append("va").toString(); System.out.println(s1.intern()==s1);//true //常量池中本身就有字符串java所以返回的并不是同一个字符串 s2.intern()返回常量池中的 //java s2为new的字符所以不相等返回false String s2 = new StringBuilder("ja").append("va").toString(); System.out.println(s2.intern()==s2);//false */
6.泛型:
https://www.cnblogs.com/lwbqqyumidi/p/3837629.html