JAVA基础知识

问:什么是内部类呢?
答:内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!!

答:内部类的主要作用如下:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

问:内部类有几种呢?
答:内部类可分为以下几种:
1.成员内部类
2.静态内部类
3.法内部类
4.匿名内部类

问:静态内部类是 static 修饰的内部类,这种内部类的特点是:
答:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类()

温馨提示:
1、 外部类是不能直接使用内部类的成员和方法滴
2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。

注意:
声明抽象方法会造成以下两个结果:
1、如果一个类包含抽象方法,那么该类必须是抽象类。
2、任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
3、构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
4、子抽象类继承父抽象类,必须显性调用父抽象类的显性构造器


接口:

1、凡是实现接口的类都需要实现接口的所有方法,除了抽象类不需要。
2、接口不能被实例化,但是能够被实现。
3、接口没有构造方法。
4、接口中的所有方法必须是抽象方法(隐式抽象,public abstract)。
5、接口不能包含成员变量,除了final与static修饰的(有的话会被总动转化成public static final,不能用private)
6、接口不是被类继承,而是被类实现
7、接口支持多继承。
8、接口中的所有方法都是共有的。


抽象类与接口的区别:
1、抽象类中的方法可以有方法体,就是实现具体的功能,但是接口不行。
2、抽象类中的成员变量可以是多种类型的,但接口不行
3、接口中不能含有静态的代码块以及静态的方法(用static修饰),而抽象类里面是可以的。
4、一个类只能实现一个抽象类,而一个类可以实现多个接口。


接口与多态
1.Java 不支持多继承性,即一个类只能有一个父类。
2.接口体中只有抽象方法,没有普通的方法,而且接口体中所有常量都是static常量、访问权限一定都是public(允许省略public final static 修饰符),方法同上。
3.一个类实现多个接口用逗号隔开
4. 类在重写接口中的方法时不仅要去掉abstract修饰的方法体,而且方法的访问权限一定要明显的用public来修饰。
5.接口声明时,如果关键字interface前面加上public关键字,就称这样的接口是一个public接口。public接口可以被任何一个类实现。如果一个接口不加public修饰,就称作友好接口类,它可以被与该接口在同一个包中的类实现。
6.父类实现了某个接口,那么子类也就自然实现了该接口,子类不必在显式的使用关键字implents声明实现这个借口

关于接口回调
把实现接口的类的实例的引用赋值给接口变量后,该接口变量就可以回调类重写的接口方法。


数组与枚举
创建数组
1.Java不允许在声明数组中的方括号内指定数组元素的个数
2.类型 数组名[] 或者 类型[]数组名

为数组分配元素
1.数组名=new 类型 [元素个数] 例:boy=new float[4];
2.和C语言不同的是,Java允许使用int型变量的值指定数组元素的个数
例:int size=30; double number[]=new double[size];

数组的初始化
例:字符数组 char a[]={'a','b','c'};

遍历数组
1.循环遍历
for( int i:a){
System.out.println(i);
}
2.利用toString()遍历
int []a={1,2,3,4,5,6};
Arrays.toString(a);
得到的字符串:[1,2,3,4,5,6]

复制数组
arraycopy()方法










排序与二分查找
排序:public static void sort(double a[])
二分法:public static int binarySearch(double []a ,double num)

枚举









输入输出流
File类
该对象主要用来获取文件本身的一些信息,比如文件所在的目录、文件的长度、文件读写权限等
创建一个 File对象的构造方法有三种
1.File f=new File(“E。java”);
2.File f=new File(“d:/1000/E.java”);
3.File f=new File(“d:/1000”,"E.java");
文件属性
String getName() 获取文件名字
boolean canRead() 判断文件是否可读
boolean canWrite() 判断文件是否可被写入
boolean exists() 判断文件是否存在
long length() 获取文件长度(单位是字节)
String getAbsolutePath() 获取文件绝对路径
String getParent() 获取文件的父目录
boolean isFile() 判断文件是否是一个普通文件
boolean isDirectory() 判断文件是否是一个目录
boolean isHidden() 判断文件是否是一个隐藏文件


目录
boolean mkdir() 通过File对象调用来创建一个目录
String [] list() 用字符串形式返回目录下的全部文件
File [] listFiles() 用File对象形式返回目录下的全部文件
String [] list(obj) 用字符串形式返回目录下的指定类型的所有文件
File [] listFiles(obj) 用File形式返回目录下的指定类型的所有文件













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值