class
为定义类的关键字,Food
为类的名字,{}
为类的主体。
类中包含的内容为类的成员,属性主要是来描述类的,称为类的成员属性或成员变量
方法主要说明类具有哪些功能,称为类的成员方法。
public
。main
方法所在的类一般要使用public
修饰(注意:Eclipse默认会在public
修饰的类中找main
方法)public
修饰的类必须要和文件名同名。//创建类
class Food{
String fish;//成员变量/字段(属性)
//..可以有多个成员变量
//成员方法/行为
public void eat(){
system.out.println("吃鱼");
}
//...可以有多个成员方法
}
- 定义一个类,就相当于定义了一种全新的类型,与
int、double等类似,只不过这些是属于内置类型
,有了这些自定义类型之后,就可以像使用内置类型一样来定义变量
。用这些自定义类来定义实例
(或成为对象)- 用类的类型创建对象的过程,称为类的实例化。
- 实例化出的对象才能实际存储数据,占用物理空间。
Java
采用new关键字
,来用类名实例化对象。.new关键字
用于创建一个对象的实例。- 使用
.
来访问对象中的属性和方法。- 同一个类可以创建多个实例。(就像用
int
创建多个变量一样。)
this
引用是指当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有的成员变量的操作。
this
的类型:对引用类类型引用,即哪个对象调用就是哪个对象的引用类型。this
只能在“成员方法”中使用。this
只能引用当前调用该成员方法的对象,不能再引用其他对象。this
是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用“成员方法”对象的引用传递给该成员方法,this
负责接收。this
引用的是调用成员方法的对象。void
也不行。public
修饰。构造方法汇总,可以通过
this
来调用其他构造方式简化代码。
this()
,必须是在构造方法中第一条语句,否则编译报错。this(传参)
;this
不能形成循环。(即调过去调回来,形成死循环)在声明成员变量时,就直接给出了初始值。
类中的成员变量,不赋初始值,编译器会默认给一个值。(成员变量不赋值,照样能够使用,通过编译,不报错。局部变量使用前必须赋值,否则编译失败)
new关键字
所发生的一些不为人知的秘密:
JVM
层面则需要做很多事情:检测对象对应的类是否加载了,如果内衣加载则自动加载。
为对象分配内存空间
处理并发问题
- 比如:多个线程同时申请对象,JVM
要保证给对象分配的空间不冲突
初始化所分配的空间:即默认值:
调用构造方法,给对象中各个成员赋值。
Java
中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,而访问权限用来控制方法或者字段(成员属性)能否直接在类外使用。
private
,成员方法设置为public
。成员变量被
private
修饰变成私有的,如果在类外要访问,则需要提供外部访问权限的方法。
概念:
- 为了更好的管理类,把多个类收集在一起成为一组,成为软件包 。
- 包是对类、接口等的封装机制的体现,是一种对类或者接口等很好的组织方式。
- 在不同的包中,同一个工程里允许存在相同名称的类。
import
语句导入包。(不能指定包导入,必须加上导入类名)import java.util.*
使用此包中所有的类。java.util
:是Java提供的工具程序包。(集合类等)import static
导入包中静态的方法和字段。在文件的最上方加上package
语句指定该代码在哪个包中。
包名需要尽量指定成唯一的名字,同城会按公司的域名的颠倒形式(例如:com.baidu.demo1
)。
包名要和代码路径匹配,例如创建com.baidu.demo1
的包,那么会存在一个对应的路径com/baidu/denmo1
来存储代码。
如果一个类没有package
语句,则该类被放到一个默认包中。(即:src
)
概念:
static
是静态的意思,可以用来修饰成员变量、成员方法- 修饰成员变量之后称为静态成员变量(类变量),修饰方法之后称为静态方法(类方法)。
- 修饰后的成员变量,可以被类的所以对象共享(访问、修改)。
static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
被
static
修饰的成员方法为静态成员方法,是类的方法,不是某个对象所特有的。
静态成员一般通过静态方法来访问。
.
静态方法名(…)方法调用,更推荐后者。this
参数,静态方法中调用时候无法传递this
引用。概念: 使用
{}
定义的一段代码称为代码块。
定义在方法中的代码块:
构造块(实例代码块):定义在类中的代码块(不加修饰符)。构造代码块一般用于初始化实例成员变量。
使用
static
定义的代码块称为静态代码块。一般用于初始化静态成员变量。
1. 静态代码块最先执行;
2. 实例代码块其次执行;
3. 最后执行构造方法。
记得三连喔~ 👍👍🏻👍🏿