java基础知识补漏

前言

​ 最近在补充自己的java基础知识,研究生毕业可能从事开发工作,所以希望早点对这方面知识进行补充。最近在阅读《java程序员从菜鸟到笨鸟》和《疯狂Java讲义》。

知识总结

一、根据CLASSPATH环境变量定位类

​ 在刚开始学习java,教程中给的配置环境变量的过程中几乎都会让配置CLASSPATH环境变量,但从来不给为什么要配置。原因是:

​ 在使用“java Java类名”命令来运行java程序的时候,JRE无法搜索到java类,需要配置CLASSPATH中的(.)表示在当前路径下执行,此外,还需要JDK中lib下的dt.jart和tools.jar工具包,所以需要把这两个文件添加到CLASSPATH环境变量中。但是在java 1.5以上版本中,java就不需要配置CLASSPATH也能够运行java程序。

二、java内存回收机制

​ java程序的内存分配和回收都是由JRE在后台自动进行。JRE挥挥手那些不再使用的内存。通常JRE会提供一个后台线程来检测和控制,一般都是在CPU空闲或者内存不足的时候自动进行垃圾回收。

​ 垃圾回收的过程:在Java中,当没有引用变量指向原先分配给某个对象的内存时,该内存便成为垃圾,JVM的一个超级线程会自动释放该内存区。

​ 因此,在编写java程序时,一个基本原则:对于不再需要的对象,不要引用它们。因为如果一直保持对对象的引用,垃圾回收机制不会回收该对象。

三、文档注释

​ 如果在编写Java源代码时,添加了合适的文档注释,可以通过JDK提供的javadoc工具将源代码的文档注释提取成一份系统的API文档。

​ javadoc工具只处理文档原文件中在类、接口、方法、成员变量、构造器和内部类之前的注释。

注释格式是:以(/*)开头,以(\/)结尾。具体格式如下:

​ javadoc基本命令:

1
javadoc 选项 Java源文件|包

四、数组

​ 1、数组的两种定义方式:

1
2
type[] arraytname
type arrayname[]

​ 2、初始化:

​ 在声明完数组织后,并没有为数组分配内存,需要进一步进行数组的初始化。

1
2
3
4
5
int[] intarr;
#静态初始化
intarr=new int[]{5,6,7,8}
#动态初始化
intarr=new int[10]

​ 3、数组深度理解:

​ 数组引用变量只是一个变量,数组对象上存储在堆内存区中,而数组引用变量存储在栈内存中。

五、面向对象

1、类的定义:

1
2
3
4
5
[修饰符] class [类型]{
0到多个构造器;
0到多个属性值;
0到多个方法;
}

2、类的方法:

​ (1)方法重载:

​ 方法重载要求:”两同一不同”—同一个类中的方法名相同,参数列表不同。返回值类型、修饰符与重载无关。

3、成员变量:

​ (1)成员变量和局部变量:

​ (2)注意:

​ 在访问类变量的时候,尽量使用类来进行访问而不是使用对象进行访问,容易造成歧义。

​ (3)隐藏和封装:

4、package、import和import static:

​ 包:引入包机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package packageName;

//创建程序
ackage monty;
public class Dog{
public static void main(String[] args){
System.out.println("Hello World!");
}

}

//编译命令
javac -d [目标路径] Dog
//运行命令
java monty.Dog

//在其他文件中导入包
import 包+类名

5、深入构造器

​ (1)如何在一个构造器中调用里一个构造器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Apple
{
public String name;
public String color;
public double weight;
public Apple(){

}

public Apple(String name,String color){
this.name=name;
this.color=color
}

public Apple(String name,String color,double weight){
//通过this调用另一个构造器
this(name,color);
this.weight=weight;
}
}

6、继承

​ JAVA继承的特点是单继承,每一个子类只能有一个直接父类,使用关键字extends。

​ (1)方法重写

​ 遵循”两同两小一大”:方法名相同、形参列表相同、子类方法返回值类型比父类方法返回值类型更小或者相等。

​ (2)在子类中使用父类的方法:super关键字。

​ (3)instanceof 运算符 :判断一个对象是否是一个类。

坚持原创技术分享,您的支持将鼓励我继续创作!