java,
java,
昨天做了个测试,结果非常惨,败给了平时没有注意到的一些小知识点,所以写了这篇文章,希望自己能够记住。
1、Java面向对象编程的三大特点 :继承、封装、多态
2、Java中的构造器(构造方法)可省略,因为会有一个默认的无参构造方法,普通方法也可以与类名相同。
package Test;
public class Test {
public static void main(String[] args){
}
public void Test(){
}
}
3、Java内部类分为三种:
成员内部类:外部类.内部类 对象 = 外部类对象 .new 内部类();
内部类的优先级和外部类的属性相同,需要外部类成员去调用。
package Test;
public class Teacher {
public static void main(String[] args){
Teacher.Student stu = new Teacher().new Student();
}
class Student{
}
}
静态内部类:外部类.内部类 对象名= new 外部类.内部类();
此时内部类的优先级和外部类相等,相当于静态方法,不需要类的对象;package Test;
public class Teacher {
public static void main(String[] args){
Teacher.Student stu = new Teacher.Student();
}
static class Student{
}
}
函数内部类:此时内部类只能在函数(方法)中使用,优先级相当于方法内的局部变量。 package Test;
public class Teacher {
public static void main(String[] args){
Teacher tea = new Teacher();
}
public void Study(){
class Student{
}
Student stu = new Student();
}
}
4、==号和equals
==号判断的是地址,equals判断值
package Test;
public class Teacher {
public String name;
public static void main(String[] args){
Teacher tea = new Teacher("张三");
Teacher tea2 = new Teacher("张三");
System.out.println(tea==tea2);
System.out.println(tea.name.equals(tea2.name));
}
//构造方法
public Teacher(String name){
this.name=name;
}
public void Study(){
class Student{
}
//创建Student类
Student stu = new Student();
}
}
代码运行结果是false和true
因为tea和tea2并不是同一个对象,因而其地址也不同,故得到的结果是false
而因为tea和tea2的name属性值是相同的,所以得到的结果为true。
5、关于+号
如果+号两边同为八大基本类型,则为数学运算符,若任意一边或两边为类类型,则为连接 符。
package Test;
public class Test2 {
public static void main(String[] args){
int a=1;
char b = '2';
byte c = 3;
String d = "4";
System.out.println(a+b+c);
System.out.println(a+b+c+d);
}
}
以上程序运行结果为54和544,因为char会强转为int类型(利用ASCII),所以会进行 数学运算,而第二个打印语句执行的是前面的数学运算,在加上后面的字符串,+号就成了 连接符,即最后变为一个字符串:”544”。
6、异常全部继承于Throwable,Object是所有类的父类。异常分为受检异常(非运行时异 常)和非受检异常(运行时异常)例如被除数为0就是非受检异常。非受检异常可以不捕 捉,程序不会报错(不运行的情况下),受检异常一定要捕捉。而且不管有没有异常,程序 总是会运行finally代码块,所以finally部分是一定会运行的。
7、流
分为字节流和字符流
字节流:InputStream OutputStream (是接口,不能直接new)
字符流:BufferReader BufferWriter (普通类,可以直接new)
8、线程
线程的 riun方法只是一个普通方法,调用run方法并不代表着线程启动,start()才是 线程的启动方法
9、八大基本数据类型
byte char short int long float double boolean
Jdk为其每一个都提供了一个类类型
Byte Character Short Interger Long Float Double Boolean
使用类类型可借用你其方法来实现类型转换等各种功能。
高精度赋值给低精度数据会出错,比如long类型赋值给int类型long表示的8个字节, int只有4个,会失去精度,所以会报错,反过来则不会,低精度转高精度就没问题。
9、抽象类和接口的异同?
1)属性
抽象类中属性可以是常量,也可以是变量
接口中的属性必须是常量
2)方法
抽象类中的方法可以是抽象方法,也可以是普通方法,可以有构造方法
接口中的方法必须是抽象方法。
3)接口中常量和抽象方法的访问权限一定是public,抽象类不一定
10、静态变量与实例变量
1)语法定义上来说,静态变量定义时要加static,实例变量不用
2)静态变量属于类,实例变量属于实例,实例变量必须要先实例化才能使用 ,静态变量 不需要,直接使用类名来引用即可。
相关文章
- 暂无相关文章
用户点评