Java 语言中除基本类型之外的变量类型都称之为引用类型。
例如: 我们有一个自定义类为Car(汽车类)
class Car{
String color;
String name;
String model;
}
Car car= new Car();
通常把这条语句的动作称之为创建一个对象,其实,它包含了三个动作
1)右边的“new Car()”,是以Car类为模板,调用Car类的构造函数,在堆空间里创建一个Car类对象。
2)左边的“Car car”创建了一个Car类引用变量。
3)”=”操作符使对象引用指向刚创建的那个Car对象。
我们可以把这条语句拆成两部分:
Car car;
car= new Car();
这样写,就比较清楚了,有两个实体:一是对象引用变量,一是对象本身。
值传递与引用传递
值传递(形式参数类型是基本数据类型):利用数值在其中进行传递。
引用传递(形式参数类型是引用数据类型参数):在计算过程中利用引用的变量进行传递。
基本类型和引用类型的区别
static 关键字
static被称为静态,可以用来修饰类的属性,方法,代码块,内部类
static属性:静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个。
static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用
在static方法内部只能访问类的static属性,不能访问类的非static属性。
模拟卖票
public class TicketSeller{
private static int ticket=11;//票数只有一份 声明为静态的
public static void sellticket(){
ticket=ticket-1;
System.out.println("卖票的静态方法");
}
}
public class Test{
public static void main(String[] args) {
TicketSeller .sellticket();//没有创建对象也可以访问静态方法
}
}
代码块
实例代码块: 创建对象时调用,每创建一次对象执行一次
静态代码快: 在类被加载时调用,只执行一次
巩固习题:
public class HelloB extends Hello {
public HelloB() {
}
{
System.out.println("I’m B class");
}
static {
System.out.println("static B");
}
public static void main (String[]args){
new HelloB();
}
}
class HelloA {
public HelloA() {
}
{
System.out.println("I’m A class");
}
static {
System.out.println("static A");
}
}
}
输出结果:static A static B I’m A class I’m B class
1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3
静态代码块是类级别的,构造代码块和构造方法 是实例级别的