部分代码转载至马士兵JAVASE资料。
创建对象的过程:
(1)在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。
(2)创建对象,在堆中开辟空间
(3)对对象进行初始化操作,属性赋值都是默认的初始值。
(4)new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值
this关键字 用法:
(1)this可以修饰属性:
当属性名字和形参发生重名的时候,或者 属性名字 和局部变量重名的时候,都会发生就近原则,所以如果我要是直接使用变量名字的话就指的是离的近的那个形参或者局部变量,这时候如果我想要表示属性的话,在前面要加上:this.修饰。(如果不发生重名问题的话,实际上你要是访问属性也可以省略this.)
(2)this修饰方法:
在同一个类中,方法可以互相调用,this.可以省略不写。
(3)this可以修饰构造器:
同一个类中的构造器可以相互用this调用,注意:this修饰构造器必须放在第一行
static可以修饰:属性,方法,代码块,内部类。
static修饰属性:
内存分析:
一般官方的推荐访问方式:
可以通过类名.属性名的方式去访问:
static修饰属性总结:
(1)在类加载的时候一起加载入方法区中的静态域中
(2)先于对象存在!
(3)访问方式: 对象名.属性名 类名.属性名(推荐)
static修饰属性的应用场景:
某些特定的数据想要在内存中共享,只有一块 ---> 这个情况下,就可以用static修饰的属性
属性:
静态属性 (类变量)
非静态属性(实例变量)
static修饰方法:
代码块
类的组成:
属性,方法,构造器,代码块,内部类
代码块分类:
普通块,构造块,静态块,同步块(多线程)
包的作用:
为了解决重名问题(实际上包对应的就是盘符上的目录); 解决权限问题。
创建包:
包名定义:
(1)名字全部小写
(2)中间用.隔开
(3)一般都是公司域名倒着写 : com.jd com.msb
(4)加上模块名字:com.jd.login com.jd.register
(5)不能使用系统中的关键字:nul,con,com1---com9.....
(6)包声明的位置一般都在非注释性代码的第一行:
总结:
1.导包:就是为了进行定位
2.在导包以后,还想用其他包下同名的类,就必须要手动自己写所在的包。
3.使用不同包下的类要需要导包: import **.*.*; 例如:import java.util.Date;
4.同一个包下的类想使用不需要导包,可以直接使用。
5.在java.lang包下的类,可以直接使用无需导包:
6.IDEA中导包快捷键:alt+enter 可以自己设置自动导包
7在Java中的导包没有包含和被包含的关系。