1.包
包的作用:用于分类,将不同功能的类放在不同包中以便区分。
1)包存在的意义
a.在定义的类过多时,包可以将如此多的类进行分类,便于管理
b.不同包下的类可以同名,减少了名命时的麻烦
c.可以通过包,对同一包下的类进行限定
2)包的定义:package 包名;
3)跨包请求时需要进行导入 import 包名 类名;导入指定类import 包名.*;

2.权限/访问修饰符
修饰符的意义在于限定属性和方法可以被哪些类或方法来使用
a.类的访问修饰符有两种 1.public2.默认(不写的时候就是默认)
b.类中的属性或方法的修饰符有1.public(公有)2.protected(受保护的)3.默认4.private(私有)。
| 权限 | 同一类 | 同一包 | 不同包的子类 | 所有类 |
| public | 允许 | 允许 | 允许 | 允许 |
| protected | 允许 | 允许 | 允许 | 不允许 |
| 默认 | 允许 | 允许 | 不允许 | 不允许 |
| private | 允许 | 不允许 | 不允许 | 不允许 |
3.static关键字
static:静态的
用来修饰属性(成员变量),则该属性就成为类属性(不依赖于某个对象而存在),所有该类的实例对象都共用这一个属性,任何一个实例改变了静态属性值,大家看到的都是修改过的值。在内存中static属性是所有类实例共有的内存地址。static来修饰方法,则该方法就成为静态方法,可以直接通过类名访问,一般在工具类中定义工具方法。
静态变量和实例变量的区别:
1.实例变量,依赖于实例对象而存在。访问实例变量的时候,必须通过实例对象来访问
2.实例变量,在内存中可以有多份(内存中创建了多少实例对象,就有多少实例变量)
每个实例对象的实例变量互不影响
3.静态变量,不依赖于对象而存在。直接与类关联,可以通过类名来访问
4.静态变量,在内存中只有一份,被所有实例对象共享。
static的使用场景
1)static修饰的变量叫静态变量
2)static修饰的方法叫静态方法
3)static修饰的代码块叫静态代码块
静态变量/方法,与实例变量/方法
实例方法可以访问静态变量/方法;
静态方法不可以访问实例变量/方法,可以访问其他静态变量/方法;
static的特点
所有的静态(静态变量和静态方法)都属于类 (全局)
- 静态属性和静态方法可以直接通过
类名.静态属性类名.静态方法()来使用,这是推荐的方式。当然也可以通过实例对象来访问静态属性和静态方法,但是这种做法不推荐
- 静态方法中,只能访问静态属性和其它静态方法。不能访问实例属性和实例方法
- 实例方法中,可以访问静态属性和静态方法,也可以方法实例属性和实例方法
- 静态代码块,在类被加载时自动调用。
4.String
String 字符串,引用数据类型;
String的特点:
1.字符串不可变;
2.每一个字符串都是String类的实例对象;
3.因为字符串不可变所以字符串是共享的;
4.字符串的效果上相当于一个char[] 数组,但是它的底层原理是byte[] 字节数组。
String字符串的两种创建方法:
1)通过""直接创建:String a = "ABC";
2)通过构造方法创建 String a = new String("ABC");
5.jvm的内存图











