一、字符串相等问题:
1.两个值相同的String类变量相等:
String a = "abc";
String b = "abc";
System.out.println(a == b);
结果:true
2.通过拼接得到的String类变量,即使值相同也不相等:
String a = "ab";
String b = "c";
String c = "abc";
System.out.println((a+b) == c);
结果:false
二、print控制台输出的特殊情况:
1.数字+数字+字符(串)输出:
System.out.println(100+5+"c");
结果:105c
数字相加在开头系统会自动相加
2.字符(串)+数字+数字输出:
System.out.println("c"+100+5);
结果:c1005
数字相加不为开头时系统不会自动相加
三、重写(Override)和重载(Overload)的区别
重写是父类与子类的多态表现,重载是一个类的多态表现。
1.重写(Override):
重写是发生在继承之中,子类对于父类方法进行重写(参数列表不变,只对函数体进行修改)。
同时重写方法所抛出的异常必须是父类异常的子类。如:父类为IOException异常,子类所抛出的异常只能为IOException异常的子类不能为Exception。
子类重写方法的访问权限不能低于父类,如父类为public,子类不能为protected。
用final声明的方法不能被重写
用static声明的方法不能被重写但是可以被再次声明
子类父类在同一个包中时,子类可以对父类中所有除了private和final修饰的方法进行重写
不在同一个包中时,子类只能对父类中的public和protected修饰的非final方法进行重写
只有继承了的方法才能被重写
构造函数不能被重写
2.重载(Overload)
同一个类中,方法名相同参数列表不同,返回值可以相同也可以不同,访问修饰符可以不同。每一个重载方法都必须有不同的参数列表。
四、多态
优点:
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
1.重写(Override)
父类引用指向子类对象(Parent p = new Child();)父类对象可以通过子类的构造函数进行初始化,该对象可以调用子类所重写过的函数。(没有被重写的方法,父类引用调用时会报错)
2.虚函数
Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是Java的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数。
3.接口
通过interface来声明接口,之后通过implement来声明实现类来实现接口。(实现类必须实现接口的所有方法,一个实现类可以实现多个接口)
4.抽象类
通过abstract关键字来声明,含有抽象函数的类一定是抽象类,抽象类不一定含有抽象函数。抽象类不能直接实例化,只能通过非抽象子类(必须实现抽象类中的所有抽象方法)来实例化。非抽象子类通过extends来继承抽象类。抽象方法不能有方法体,同时构造函数和静态函数不能被定义成抽象函数。
五、枚举
关键字enum,枚举和类一样可以有自己的方法、变量,其中构造函数只能用private修饰。枚举类可以包含抽象方法,每个实例都必须实现所有的抽象方法。
六、包
Java中类和接口都是存放在包(package)。每一个java源文件中(.java文件):package在第一个,import在第二个,类定义在最后。同一个包中的类不需要通过import引用,需要引用不同包中的类时添加import。通过定义JAVA_HOME和CLASSPATH来设置.java(源代码)和.class(字节码)文件的位置(可以不一样)。
七、Java中的数据结构
- 枚举(Enumeration)
- 位集合(BitSet)
- 向量(Vector)
- 栈(Stack)
- 字典(Dictionary)
- 哈希表(Hashtable)
- 属性(Properties)
1.枚举(Enumeration)
(vector 实现了List接口,数据结构是数组但是支持线程同步,是线程安全的。)
Enumeration elements()方法:返回list中值的枚举 如:Enumeration e = (HashTable/Vector) list.elements();
boolean hasMoreElements()方法:如果枚举中还有多个元素返回true,反之返回false 如:boolean flag = (Enumeration) e.hasmoreElements();
Object nextElements()方法:如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
2.位集合(BitSet)
八、输出格式
System.out.printf(format,element,...):该方法可以控制输出的格式,比起println来的更加高级。
format:该参数控制输出的格式:""中可以添加想要的格式如"(%d,%d)"。数据控制符以%开头,以字母结尾(代表数据类型),d:整型,f:浮点型(.2f)表示精确到小数点后2位,s:String类型。