权限控制
new对象过程
构造方法
构造方法不能被继承
Java 构造方法有以下特点:
- 方法名必须与类名相同
- 可以有 0 个、1 个或多个参数
- 没有任何返回值,包括 void
- 默认返回类型就是对象类型本身
- 只能与 new 运算符结合使用
instanceof 关键字判断对象之间相等
多态
A a = new D();
interface
接口之间可以继承 多继承; 也可以实现多态
接口中不存在构造方法,接口不能被实例化
方法,基本类型 引用类型在栈里 对象实例在堆中
String str = “a” 相当于final类型 str += b 之后,会新开辟一个空间来存放
而StringBuffer 则是在原来的基础上修改
反射
在反射中,根据类型 获取方法时:基本类型(int char…) 和包装类(integer charcter)不一样…
getField() 拿属性 getDeclaredField( ")
field.setAccessible(true) //用反射时 访问私有变量
field.set(obj , value)
空指针异常产生的主要原因如下:
(1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在
(2)当访问或修改一个对象不存在的字段时会产生异常obj.method() // method方法不存在
(3)字符串变量未初始化;
(4)接口类型的对象没有用具体的类初始化,比如:
List lt;会报错
List lt = new ArrayList();则不会报错了
当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码:
if(rb!=null && rb!="")
改成:
if(rb==null);
if(rb!==null&&rb!="") 或者if((“”).equals(rb))
空指针的解决办法:
重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。
Java流(Stream) 文件File 和IO
一个流 可以理解为 一个数据的序列 输入流表示 从一个源读取数据 输出流表示 向一个目标写数据
读取控制台 输入 :
BufferedReader br = new BufferedReader(new InputStreanmReader(System.in));
c = (char)br.read();
d = br.readLine();
输出 :
System.out.write(d);
InputStream(读文件) OutputSream(写文件)
InputStream in = new FileInputStream(new File("C:/java/hello"));
public static void main(String args[])throws IOException{
DataInputStream in = new DataInputStream(new FileInputStream("test.txt"));
DataOutputStream out = new DataOutputStream(new FileOutputStream("test1.txt"));
BufferedReader d = new BufferedReader(new InputStreamReader(in));
String count;
while((count = d.readLine()) != null){
String u = count.toUpperCase();
System.out.println(u);
out.writeBytes(u + " ,");
}
d.close();
out.close();
}