JavaSE学习笔记 |
修饰符
- public :公开的,任意地方均可见
- protected : 受保护的, 同包和子类可见
- 缺省 :同包可见
- private : 私有的,仅所在类可见
数据类型
概念:java属于强类型语言,类比js属于弱类型语言
1.八大数据类型:
数值类型:
1.1>数值类型:
整数类型:byte short int long
浮点类型:float double
字符类型: char
1.2>布尔类型:
boolean
2.引用数据类型:
类:对象的抽象,由属性和方法构成
接口:提供一套标准,只允许抽象方法,且默认为抽象方法
数组:顺序表,可以随机存取
需要注意的问题:
public static void main(String[] args) {
//整数拓展:二进制0b 十进制 八进制0 十六进制0x
// int i=10;//十进制
// int i1=010;//八进制
// int i2=0b10;//二进制
// int i3=0x10;//十六进制
//========================================
//浮点数拓展
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//false
float d1=798179571080580180f;
float d2=d1+1;
System.out.println(d1==d2);//true存在舍入误差,因此银行业务使用大整数类型
}
变量作用域
变量:
类变量:加上static关键字,通过类名引用,所有对象共享
实例变量:在类里面方法外面,通过对象引用,不同对象不同
局部变量:方法中,必须声明和初始化
类型转换
public class TypeTransfer {
public static void main(String[] args) {
//低---------------------高
//byte,short,char->int->long->float->double
int i=128;
//byte b=i;//不能自动向下转换,需强制转换
byte b = (byte) i;//出现内存溢出
//强制转换 (类型)变量名 高->低 或出现内存溢出,精度问题
//自动转换 低->高
}
}
面向对象
面向对象:
类的加载顺序:静态代码块>匿名代码块>构造方法
本质:以类的方式组织代码,以对象的方式封装数据
三大特性:
封装:高内聚,低耦合 属性私有化,对外提供get/set方法
提高程序的安全性,保护数据
隐藏代码的实现细节
统一接口
继承:对类进行抽象,只允许单继承 子类与父类是 is a的关系
子类可以继承父类所有的public方法
私有的东西无法被继承
所有类都默认继承object类
super:父类的引用,类比于this
默认先调用父类的构造器super(),也只能先调用
super必须出现在子类的方法或者构造方法中
super和this不能同时调用
多态:父类引用指向子类对象
只能执行引用变量类型中存在的方法,优先执行被子类重写的
重写:需要有继承关系针对于方法,子类重写父类
静态方法:父类与子类调用重写方法结果不一样
static属于类成员
非静态方法:父类与子类调用重写方法结果一样
非静态方法属于对象成员
抽象类:
可以有抽象方法和非抽象方法
接口:
支持多实现
只允许定义抽象方法且默认为抽象方法
对象内存分配
异常
自定义异常
1.使用try/catch捕获可能发生的异常的方法
try {
demo01.test(11);//检测可能出现异常的方法
} catch (MyException e) {//捕获方法向外抛出的异常
e.display();//打印自定义异常信息
}
2.定义异常的产生条件
//可能存在异常的方法 要在方法上加throws
public static void test(int a) throws MyException {
if(a>10){
throw new MyException();//向上抛出自定义异常
}
}
3.自定义异常的处理
//自定义异常,需要继承异常类
class MyException extends Exception{
//打印异常信息
public static void display(){
System.out.println("myexception");
}
}