Java 基础问题整理(更新中)

来源:互联网 发布:json的实际应用 编辑:程序博客网 时间:2024/06/06 11:03

最近复习java基础的时候发现很多知识点都忘记了,所以在这里专门整理一下。

1.4种访问修饰符


2. switch 接收byte、char、short、int ; 1.5 后支持 枚举 ; 1.7 后支持 String 

3.类型转换

精度:byte<short<int<long<float<double

低精度到高精度自动转换,高精度到低精度需要强制转换
int i = 133; long l = i;double d = 3.5; float f = (float) d;


小数常量默认double 类型,所以小数常量需要转换才能赋值给float
float f = (float) 3.5;

整数常量默认为int 类型,但是byte char short 类型在不超过精度时,不需要手动转换
byte b1 = 1; byte b2 = (byte) 128;


char 类型不在自动转换之列,所以需要手动转换
char c = 'C';byte b = (byte) c;short s = (short) c;char c1 = (char) b;char c2 = (char) s;

计算时 byte short char 型的值将被提升为int型,有long转long,有double转double
short s1=1,s2 = 1;s1 = (short) (s1+s2);


复合赋值运算符 += / -= 会自动转换为左侧的类型

short a = 1; a += 1;

自动装箱与自动拆箱

/** 自动拆箱 自动装箱 **/Integer i1=100;  Integer i2=100;  Integer i3=300;  Integer i4=300;  System.out.println(i1==i2);// true 同一个对象System.out.println(i3==i4);// 包装基础对象时,-128 <= i <= 127 返回已存在对象, 超出范围返回全新对象Integer i = 100; int ii = 100;System.out.println(i == ii);// 包装类与基础数据比较时,包装类会自动拆箱,然后再比较

4.String 类为final,不可以继承;String 类重写了equal方法,所以我们可以使用equal来判断字符串内容是否相等。

5.构造器不能被重写,只能重载;子类的构造都必须调用父类的构造,默认就是super(),所以如果父类没有构造无参数构造函数,必须显式的调用。

6.StringBuffer 与 StringBuilder 的区别时,StringBuilder时单线程环境下使用的,效率略高;而StringBuffer 是线程安全的,多线程下是使用;

7.String s = "123" 与 String s = new String("123"); 的区别

// 以下两条语句创建了1个对象。"凤山"存储在字符串常量池中 String str1 = "凤山"; String str2 = "凤山"; System.out.println(str1==str2);//true      //以下两条语句创建了3个对象。"天峨",存储在字符串常量池中,两个new String()对象存储在堆内存中 String str3 = new String("天峨"); String str4 = new String("天峨"); System.out.println(str3==str4);//false 


8.java 异常处理

1、 异常都会中断代码执行,除非 try catch 处理之
2、 RuntimeException 为不可查异常,所以不是必须处理的,可以不申明也不处理。
3、 throw 抛出异常 throws 申明异常(交给下一个调用者处理)
4、 try 块后可同时接 catch 和 finally 块,但至少有一个块

9.java 内存

1、内存主要可以分为 堆、栈、方法区、本地方法栈及程序计数器(寄存器)。常量池在方法区中。
2、栈 -- 局部变量,对象引用;堆 -- 对象,数组;方法区 --  常量池,类方法字段描述;本地方法栈与方法区类似,为调用本地方法使用
3、类的只有四种情况会初始化:new 对象 或 操作static字段、static方法 ; reflect 调用; 调用子类的时候父类还没有初始化则会初始化父类; 虚拟机启动时会加载包含main()方法的类
0 0