文章目录
Java基础知识
基本类型
类别及其对应包装类
1. byte—Byte
2. char—Character
3. short—Short
4. int—Integer
5. long—Long
6. float—Float
7. double—Double
8. boolean—Boolean
装箱及拆箱
缘由
变化
JDK1.5以前
public class WrapperClass {
public static void main(String[] args) {
//构造器方法定义Integer包装类a,并赋值
Integer a=new Integer("5");
System.out.println(a);
//构造器方法定义Double包装类b,并赋值
Double b=new Double("5.5");
System.out.println(b);
//通过包装类.xxxValue()方法,从包装类对象中获取基本类变量
int c=a.intValue();
System.out.println(c);
double d=b.doubleValue();
System.out.println(d);
}
}
JDK1.5以后
数组的定义
一维数组
多维数组
关键字
final
static
finally
finally中的return会覆盖前面的return
面向对象
类
抽象类
含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class
类中定义抽象方法必须在具体
(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
- 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
-
抽象类中可以包含静态方法,接口中不能包含静态方法
-
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
类变量与类函数
实例变量实例函数
继承
-
初始化顺序:
-
-
父类静态块与静态函数
- 子类静态块与静态函数
- 父类构造函数
- 子类构造函数
**注意**:静态块只执行一次,按顺序执行 在Java里,只有值传递,因为引用本身就是一个地址值,我们说的”传递引用“本质上也是“值传递”,只不过传递的是地址值。 在方法中,改变一个对象参数的引用不会影响到原始引用。这是很自然的。 举个例子,假设在函数外有 A a = new A();那么引用a指向堆中的一个对象A()。
多态
向上转型
把子类对象当做父类对象来用
class Father{
}
class Son extends(Father){
}
Father f1 = new Son();// f1的内存空间实际上仍然是Son的内存空间,但引用是Father,相当于把Son当Father用
向下转型
是向上转型的还原
Son s1 = (Son) f1; //此处将f1重新交给son对象引用,原因是因为f1的内存结构就是son的内存结构
权限关系
public | protected | default | private | |
---|---|---|---|---|
同一类 | √ | √ | √ | √ |
同包 | √ | √ | √ | |
不同包子类 | √ | √ | ||
不同包非子类 | √ |
一些工具类
String,StringBuilder,StringBuffer
- String 不可变,String直接赋值时从常量池中寻找,用new时产生两个对象,一个对象指向常量池,另一个对象指向此对象
集合类
语法
关于循环的优化
- 强度削弱
- 删除归纳变量
- 代码外提
判断
switch(x)// required: 'char, byte, short, int, Character, Byte, Short, Integer, String, or an enum'
{
default:
System.out.println("Hello");
}