java

来源:互联网 发布:天刀捏脸数据女 2016 编辑:程序博客网 时间:2024/06/03 19:13

昨天做了个测试,结果非常惨,败给了平时没有注意到的一些小知识点,所以写了这篇文章,希望自己能够记住。

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(Stringname){

this.name=name;

}

public void Study(){

class Student{

}

//创建Student

Student stu = new Student();

}

}

代码运行结果是falsetrue

因为teatea2并不是同一个对象,因而其地址也不同,故得到的结果是false

而因为teatea2name属性值是相同的,所以得到的结果为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);

}

}

以上程序运行结果为54544,因为char会强转为int类型(利用ASCII),所以会进行 数学运算,而第二个打印语句执行的是前面的数学运算,在加上后面的字符串,+号就成了 连接符,即最后变为一个字符串:”544”。

6、异常全部继承于ThrowableObject是所有类的父类。异常分为受检异常(非运行时异 常)和非受检异常(运行时异常)例如被除数为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)静态变量属于类,实例变量属于实例,实例变量必须要先实例化才能使用 ,静态变量 不需要,直接使用类名来引用即可。

 

 

 

原创粉丝点击