JAVA SE基础笔记

JAVA_HOME的作用:它是指向jdk的目录的,看成一个变量就好了,便于更改。C:\Program Files\Java\jdk1.8.0_171

Path的作用:程序的执行需要使用外部指令javac,但是javac指令仅仅能在JDK安装目录下的bin目录下才能使用,我们编写的程序肯定不在这里,所以需要使javac在任意目录下都能调用。同理java命令也是需要的。%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

CLASSPATH的作用:当输入import的时候,就需要用到这个环境变量了,是记录已经写好java类库的位置。.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

关键字及其语法 成员变量和局部变量的区别

成员变量和局部变量的区别(成员变量和局部变量的名称可以相同,访问时按着就近原则):

位置不同:成员变量在类中方法外;局部变量在方法定义中或者方法声明上

内存位置不同:成员变量在堆内存中,它有初始化默认值;局部变量在栈内存中,没有初始化默认值,必须定义赋值后才能使用。

生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,随着方法的调用完毕而消失。

匿名对象

匿名对象就是没有名字的对象,使用场景:

调用对象的方法,仅调用一次的时候,调用完毕对象就会被垃圾回收器回收。

匿名对象可以作为实际参数进行传递。

封装

封装:是指隐藏对象的属性和实现细节,仅对外提供公有访问方式。
好处:提高代码的复用性;提高安全性。(举例子电脑的外壳,开机按钮)
封装的方法:

把成员变量使用private来修饰

提供对外的getXxx()和setXxx()方法

package itshuai.com; public class Student { private String name; private int age; public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } } package itshuai.com; public class StudentTest { public static void main(String[] ages) { Student stu = new Student(); stu.setName("chenshuai"); stu.setAge(25); System.out.print(stu.getName()+":"+stu.getAge()); } } 继承

继承:多个类中存在相同的属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。用extends关键字来表示。

好处:

提高代码的复用性(重复性)。

提高代码的维护性。

让类类存在关系是多态的前提。也是一个弊端,类的耦合性增强了。

注意:

子类只能继承父类的所有非私有的成员方法和成员变量。

子类不能继承父类的构造方法,但是可以通过super关键字去访问。

不要为了部分功能去进行继承,应该使用is a的方法去看是否要继承。

继承中构造方法的关系:

子类中的所有构造方法默认都会访问父类中空参数的构造方法。(因为子类继承父类中的数据,可能还会使用父类中的数据,所以子类初始化之前一定要完成父类的初始化。每一条构造方法的第一条语句默认为super(),如果不想访问无参构造,可以使用super(参数),来访问我们写好的父类中构造方法,但this()或super()一定是构造方法中的第一条语句。)

多态

多态:是指某一事物,在不同时刻表现出来的不同形态。

多态的前提和体现:

有继承关系

有方法重写

有父类引用向子类对象

多态中成员访问特点:(只因成员方法可以重写,所有比较特殊)

成员变量,编译看左边,运行看左边。(编译能否通过看父类中有没有这个成员变量,运行的结果以父类中的成员变量为准。)

成员方法,编译看左边,运行看右边。(如果父类中没有子类的方法,而你去调用子类的方法,那肯定是编译不过去的。如果都有的话,那就是重写。)

静态方法,编译看左边,运行看左边。(静态方法和类有关,也不算重写)

this关键字

this:这个关键字代表当前类的对象。this被哪个对象调用,就代表哪个对象。

应用场景:

解决局部变量隐藏成员变量的场景(下面那个场景)

变量的命名规则要做到见名知意,上面封装示例代码的Student就没有(name=n;age=a)。但如果改为name=name;age=age那么得到的值则为默认值,因为根据就近原则,赋值根本不会成功。如果改为Student.name=name,那是静态变量才能这样做,这时可以用this。

super关键字

super:代表父类存储空间的标识。(可以理解为父类引用,可以操作父类成员。)

super():调用父类的无参构造方法。

abstract关键字

abstract:用来定义抽象类和抽象方法的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfzs.html