static关键字
作用:没有static在类中定义的【数据和功能】(成员变量和成员方法),
都是属于对象的,如果【数据和功能】只是跟类有关系,那么我们可以通过
staic关键字修饰,变为(静态变量和静态方法)-属于类。
静态变量
语法:static +成员变量
静态方法
语法:static +成员方法
使用静态变量和静态方法
1)类名.静态变量或方法(推荐)----》本类中使用可以省略->类名.
2)对象引用.静态变量或方法
注意点:
1)成员变量跟对象相关,每个对象存储一份数组,静态变量跟类相关,静态变量只存储一份。
2)成员方法属于对象,需要对象调用成员方法,成员方法可以使用this,静态方法是类去调用,没有对象。
静态方法不能使用this。
java内存区域
栈:局部变量
堆:new 的对象
方法区:类的信息(class字节码数据),静态变量
gc垃圾回收
作用:回收java堆里的垃圾(没有引用指向的对象)
局部变量的回收--》编译器自动回收,当局部变量作用域结束则自动回收。
对象的回收--》对象是通过引用操作,没有引用指向的对象,没有用,就可以回收---》gc回收
gc---》是一个后台的线程
线程:一个线程就是一个工作者,一个执行翻译代码的人。
运行java程序有两个线程(同时工作)
1)main线程---》负责把main的代码执行完成
2)gc线程---》负责回收垃圾
gc回收垃圾的注意点
1)回收的垃圾是没有引用指向的对象
2)默认情况是内存不足才启动进行回收。
3)通知gc进行回收System.gc()
4)对象被回收的时候gc会调用对象的finallize方法
5)内存满了,并且没有垃圾对象,就会内存溢出错误
pakcage包
作用:组织管理类,把一些有相同功能的类放到一个包下,通过包名就管理。
打包:把类放入指定包里
语法:package 一级包名.二级包名...;
位置:java文件的第一行代码
作用:把当前java文件的所有类打到某一个包下。
打包之后类的使用
1)不需要(完整类路径和import导入)直接通过类名使用
a)java.lang包的所有类
b)同一个包的类
2)完整类路径:包名.类名
3)import导入:
位置:pakcgae语句之后,类定义之前
a)import 包名.类名;导入指定包的指定类,导入之后可以直接通过类名访问指定类。
b)import 包名.*;导入指定包的所有类,导入之后可以直接通过类名访问该包所有类。
注意,不包含子包的类。
例如:import java.util.*;导入不能使用java.util.jar里的所有类。
classpath类的路径
classpath:存储的是我们项目使用很多第三方的jar文件的路径。
jar文件:压缩文件,压缩了很多的class文件(很多的功能)。
配置能classpath就可以使用其路径包含的jar文件的class的功能。
cmd编译运行
1)环境变量配置classpath
2)javac或java的-cp配置classpath