JavaSE基础
(参考狂神说Java)
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符是大小写敏感的。
转义字符:\t 制表符
\n 换行
在操作比较大的数的时候,注意溢出问题
Byte类型:大小从-128—127
强制转换 (类型)变量名
自动类型转换 byte-->short-->char-->int-->long-->float-->double
注:1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.转换的时候可能存在内存溢出,或者精度问题
int a=3;
int b=a++; //执行完这行代码后,先给b赋值,再自增
//int a=a+1
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。
return除了表示返回一个方法,还可以表示终止方法(return 0;)
System.out.println(a)
//a++ int a=a+1
int c=++a; //执行完这行代码前,先自增,再给b赋值
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法重载的规则:
方法名称必须相同。
参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
构造器:
1.方法名和类名相同
2.没有返回值
作用:
1.new 本质在调用构造方法
2.初始化对象的值
public class Person{
//一个类即使什么都不写,它也会存在一个方法
//显示的定义构造器
String name;
//1.使用new关键字,本质是在调用构造器
//2.用来初始化值
public Person() {
}
//有参构造:一但定义了有参构造,无参就必须显示定义
public Person(String name) {
this.name = name;
}
}
public class Application{
public static void main (String[] main) {
//new 实例化了一个对象
Person person = new Person(name:"kuang");
System.out.println(person.name);
}
}
super注意点:
1. super调用父类的构造方法,必须在构造方法的第一个
2. super必须只能出现在子类的方法或者构造方法中
3. super 和 this 不能同时调用构造方法
VS this:
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法
this():本类的构造
super():父类的构造
重写:需要有继承关系,子类重写父类的方法!
1. 方法名必须相同
2. 参数列表必须相同
3. 修饰符:范围可以扩大但不能缩小 public>protected>default>private
4. 抛出的异常:范围,可以被缩小,但不能扩大; ClassNotFoundException --> Exception(大)
重写,子类的方法和父类必须一致;方法体不同!
为什么要重写:
1. 父类的功能,子类不一定需要,或者不一定满足!
多态注意事项:
1. 多态是方法的多态,属性没有多态
2. 父类和子类,有联系 类型转换异常! ClassCastException!
3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son();
1. static 方法属于类,它不属于实例
2. final 常量:
3. private 方法:
类型转换:
1. 父类引用指向子类的对象
2. 把子类转换为父类,向上转型;
3. 把父类转换为子类,向下转型;强制转换
4. 方便方法的调用,减少重复的代码!
接口的作用:
1. 约束
2. 定义一些方法,让不同的人实现~ 10 --> 1
3. 接口中的所有定义其实都是抽象的 public abstract
4. 修饰常量默认是 public static final
5. 接口不能被实例化,接口中没有构造方法
6. implements 可以实现多个接口
7. 必须要重写接口中的方法
java中的Scanner类中的方法next()与nextInt()都是吸取输入台输入的字符,区别:
next()不会吸取字符前后的空格/Tab键,只吸取字符,遇到空格/Tab键/回车停止录入
nextInt()吸取字符前后的空格/Tab键,回车键停止