小知识

来源:互联网 发布:ubuntu安装golang1.7 编辑:程序博客网 时间:2024/06/03 19:48

小知识

1、实现是虚线,继承是实现,实现谁,箭头就指向谁,继承谁,箭头也指向谁
2、java中的this关键字指的是当前类的一个实例对象,而不是指类本身
3、\ 转义符 \r回车键 \n是换行 \t是制表符 \b是退格键 \’是单引号 \”是双引号 \是一个斜杠\
4、final作用于变量,变量变常量 final作用于类,类不能被继承 final作用于方法,方法不能被覆盖
5、单继承、多实现
6、equals判断两个对象的内容是否相等,==判断两个对象是否为同一对象,对于引用类型,实际上是判断内存地址是否相同

Java基础数据类型

这里写图片描述
注意:
A、整数类型默认的是int,浮点型默认的是double
B、容量小的类型自动转换为容量大的数据类型,数据类型按容量大小排序为:byte,short,char < int < long < float < double
C、byte,short,char之间不会相互转换,它们在计算时都首先转换成int类型
D、容量大的数据类型转换为容量小得数据类型时,要加上强制转换符,但可能造成精度降低或溢出
E、多种类型的数据混合运算时系统首先自动将所有数据类型转换成容量最大的那一种数据类型,然后进行运算

Java参数传递

参数传递实质是值传递
Java中进行赋值操作或函数调用中传递参数时,遵循值传递的原则:
基本类型数据传递的是该数据的值本身
引用类型数据传递的是对对象的引用,而非对象本身
方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值

数组

1、数组中的元素可以是任何数据类型,包括基本类型和引用类型
2、一维数组的声明方式 type var[]; 或者type[] var;
3、Java语言中声明数组时不能指定其长度属性(注意是length,不是length()) 如:String str[8]; // 错误
4、创建格式分为两种:
动态初始化
一维数组
int[] array = new int[4];
二维数组
int[][] array = new int[4][];
静态初始化
一维数组
int[] array = {1, 2, 3, 4, 5};
int[] array = new int[]{1, 2, 3, 4};//正确
int[] array = {};// 无意义
int[] array = new int[4]{};// 错误
int[] array = new int[4]{1, 2, 3, 4};// 错误
int[] array = new int[];// 错误
二维数组
int[][] array = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9}, {10}};//正确
int[][] array = new int[][]{{1, 2}, {3, 4}, {5, 6}};//正确
int[][] array = {};// 无意义
int[][] array = new int[][];// 错误
int[][] array = new int[][5];// 错误
int[][] array = new int[4][]{};// 错误
5、数组排序使用数组工具类Arrays

继承与多态

1、继承中的初始化顺序:父类定义初始化 父类构造函数 子类定义初始化 子类构造函数
2、方法重载发生的条件:方法名称相同,参数列表不同(包括参数类型、参数个数、参数顺序)
方法重载与方法的作用于无关,与方法的返回类型无关
在继承中,父类方法除私有外,其它满足重载要求
3、覆盖(重写)发生的条件:
a、子类和父类方法名相同,参数列表相同
b、子类的作用域权限,不得低于父类
c、 子类和父类的返回类型必须一致


1、static
当类被装载时,静态块代码只执行一次。类中不同的静态块按它们在类中出现的顺序被执行。
静态方法不能被覆盖成非静态,非静态方法也不能被覆盖成静态方法。
2、abstract
抽象的方法只有一个声明,没有方法体
可以申明一个抽象类但是里面没有一个抽象方法
不能制造抽象类的对象
从抽象类继承的类必须override所有的抽象方法,否则它自已成为一个抽象类
抽象类的继承问题
抽象类,可以继承于抽象类
抽象类,可以继承于普通类
抽象类,可以实现接口
抽象类实现的接口,接口中定义的函数,抽象类中可实现覆盖,继承抽象类的子类,也可以实现覆盖
3、interface
接口是一种特殊的抽象类
在interface 中所有的属性都是public static final 的,即使没有显式声明。
在interface中所有的方法都是public abstract的,即使没有显式声明。


1、try..catch..finally
catch和finally块不一定要求同时出现。
一个try块可以有多个catch块。
一个catch块只能捕获一个异常。
finally里的内容无论是否有异常发生都会执行,唯一例外的是在执行finally之前调用System.exit()
2、throw和throws
throws之后是所有异常的列表,使用逗号分开各异常类型。
throw 真实抛出异常的手段。
3、异常的声明抛出有一定的原则:
子类覆盖父类方法,子类抛出的异常必须为父类可视异常。
子类实现接口,如接口定义的方法抛出的异常存在交集,在子类实现中,不能声明抛出任何异常,只能捕获。
4、自定义异常
通过继承Exception来创建用户自定义异常。
自定义异常的构造方法通常调用父类的构造方法:super(message);
如有必要,覆盖下列方法获取错误信息:
toString()
getMessage()
printStackTrace()

原创粉丝点击