一、基础内容
1.1 你问我答
1、JVM、JRE和JDK的关系?
- JDK是啥?JDK全称JavaDevelopmentToolKit,是Java语言开发工具包。
- JVM是啥?JVM全称Java Virtual Machine,是Java虚拟机。
- JRE是啥?JRE全称Java Runtime Environment,是Java运行环境。
2、跨平台性是啥?原理是什么?
- Java写的程序,在不同系统下都能运行
- 原理?多亏了JVM,Java程序是通过JVM运行的,只要你安装了对应系统的JVM就可以运行咯。
- C语言为什么不能跨平台?参考这篇文章:https://www.cnblogs.com/jmsjh/p/7808764.html
3、垃圾回收器(GC)是啥?Java不再使用的内存空间应当进行回收,比如for(int i=0;i<nums.length;i++){}。超过{}后,i就被回收了。垃圾回收器在Java程序运行过程中自动启用,程序员无法精确控制和干预。
1.2基础语法
一、额不知道咋写标题
- 二进制、十六进制
- 变量
- 运算符
- 方法
二、流程控制
- 接收输入:Scanner input = new Scanner(System.in)。int i = input.nextInt();
- 分支结构:if ; switch
- 循环结构:while ; do while ; for
- 退出循环:continue ; break
- 退出多重循环:haha: ; break haha
三、数组
- 创建格式
- 获取数组长度:nums.length
- 访问数组:下标法;遍历数组;
- 数组常见问题:数组未赋值,出现空指针;数组越界;
- 两个算法:冒泡法;二分法。https://blog.csdn.net/qq_43921008/article/details/124924851?spm=1001.2014.3001.5501
1.3 面向对象
一、类与对象
举个栗子
- 类——PPT模板
- 对象——根据PPT模板创建的具体PPT
二、创建对象时的内存分析
public static void main(String[] args) {
Person p = new Person();
p.name = "张三";
p.age = 18;
p.say();
}
class Person{
String name;
int age;
void say(){
System.out.println("我是"+name+";我今年"+age+"了。");
}
}
- 栈内存中存放基本类型的变量和引用变量,如图中的p,他指向堆内存的一个对象的地址;
- 堆内存中存放对象
三、方法的重载
- 方法名相同,但参数不同:参数个数、参数类型、参数顺序(需要参数类型不同)都可以构成重载
- 重载与返回值无关
四、构造方法
- 需要自己写无参构造方法和全参构造方法,快捷方式如下
- shift+alt+s,然后选择Generate Constructors from Superclass或者Generate Constructors using Fields,分别构造空参和带参数的构造函数
- 构造方法的重载:参数列表参数类型不同、参数个数不同
五、权限修饰符
- 使用频率最高的为public和private
六、static关键字
- 表示静态,用来修饰成员变量和成员方法
- 作用:创建独立于具体对象的域变量或方法,可以理解成类的变量或方法。被static修饰的变量或者方法,不依赖对象访问,可以通过类名直接调用。ps:未被private修饰;
七、代码块
八、this与super关键字对比
this
- 指的是当前对象的引用
- 语法为:this. this()
- this.有个作用:①this.属性名:如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀;②this.方法名:让类中一个方法,访问该类里的另一个方法或实例变量(一般this可以省略)
- this( )访问构造方法:this( ) 用来访问本类的构造方法,括号中可以有参数,如果有参数就是调用指定的有参构造方法。this();只能出现在构造方法的第一行
- this不能出现再静态方法中,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象。静态不能访问非静态;
super
- 指的是当前对象的父对象的引用
- super.父类属性名:调用父类中的属性
- super.父类方法名:调用父类中的方法
- super():调用父类的无参构造方法
- super(参数):调用父类的有参构造方法
- 子类和父类中变量或方法名称相同时,用 super 关键字来访问。可以理解为 super
this与super
- 子类和父类中变量或方法名称相同时,用 super 关键字来访问。可以理解为 super 是指向自己父类对象的一个指针。在子类中调用父类的构造方法。
- this 是自身的一个对象,代表对象本身,可以理解为 this 是指向对象本身的一个指针。在同一个类中调用其它方法。
- this 和 super 不能同时出现在一个构造方法里面,因为 this 必然会调用其它的构造方法,其它的构造方法中肯定会有 super 语句的存在,所以在同一个构造方法里面有相同的语句,就失去了语句的意义,编译器也不会通过。
- this( ) 和 super( ) 都指的是对象,所以,均不可以在 static 环境中使用,包括 static 变量、static 方法和 static 语句块。
- 从本质上讲,this 是一个指向对象本身的指针, 然而 super 是一个 Java 关键字。
九、重写与重载
重载:
- 发生在一个类中,重载是一个类中多态性的一种表现
- 重载要求同名方法的参数列表不同:参数类型、参数个数、参数顺序
- 重载与返回值无关;
重写
- 发生在继承中
- 参数列表必须与被重写的方法相同
- 返回类型必须与被重写方法相同
- 访问权限不能比父类被重写方法权限更低
- 父类的成员方法只能被它的子类重写
- 声明为private和static的方法不能被重写,但是可以被再次声明