corejava_day3

本文详细介绍了Java中的表达式和流程控制,包括实例变量与局部变量的定义、作用范围和生命周期,Java的操作符,如赋值、比较、逻辑等,以及流程控制结构如if、switch、循环(for、while、do-while)的用法。同时讲解了break、continue的使用以及label标签在循环中的作用。
摘要由CSDN通过智能技术生成

目标:

表达式和流程控制


表达式和流程控制

1. 实例变量和局部变量

程序的基本功能是处理数据,程序中需要使用变量来接收并表示数据。

程序中的变量必须先定义之后才能使用。

定义变量包括定义变量的“类型”以及变量的“名字”。

例如:int a; Student s;

程序中的变量分为实例变量和局部变量。

  1. 实例变量(又称属性、全局变量、成员变量)

位置:

直接定义在类中,属于类中的一种成员(成员变量/成员方法)

例如:

public class Student() {
   
    public String name;
}

作用范围:

是指变量定义之后,都在哪些地方可以被访问到。

由于实例变量是直接定义在类中的,所以在定义的时候课以使用修饰符进行修饰。

例如:这四种修饰符的作用之后会介绍到

public class Student() {
   
    public String name1;
    protected String name2;
    String name3;
    private String name4;
}

以上是使用了四种访问权限控制修饰符来修饰了这四个变量。

但是不管是哪种修饰符情况,实例变量再当前类中的每一个方法都是可以被访问到的(static修饰的静态方法除外)。

public class Student {
   
    public String name1;
    protected String name2;
    String name3;
    private String name4;
    
    // 类中的方法里面可以直接访问实例变量
    public void run() {
   
        System.out.println(name1); // null
        System.out.println(name2); // null
        System.out.println(name3); // null
        System.out.println(name4); // null
    }
}

默认值:

类的中实例变量声明后,如果我们没有显式赋值的话,每种实例变量其实都是有自己的默认值的。

实例变量的赋值分为隐式赋值和显式赋值

隐式赋值就是JVM给它赋的值(就是说的默认值)

显式赋值就是我们主动给它赋的值

例如:

public class Student {
   
    public int a;
    public float f;
    public char c;
    public boolean b;
    public String str;
    
    public void println() {
   
        System.out.println(a); // 0
        System.out.println(f); // 0.0
        System.out.println(c); // 
        System.out.println(b); // false
        System.out.println(str); // null
    }
}

基本类型的实例变量:

整型:默认值为0

浮点型:默认值为0.0

布尔型:默认值为false

字符型:默认值为0或者 ‘\u0000’

引用类型的实例变量:

默认值都是null

生命周期:

实例变量是属于对象的,一个对象被创建出来,这个对象中的实例变量就有了,直到这个对象被GC当做垃圾回收之后,这个实例变量也就没有了。

  1. 局部变量

位置:定义在方法的代码块中或者方法的参数列表中

例如:a b c d四个都是局部变量

public void test(int a) {
   
    int b;
    {
   
        int c;
    }
    if(true) {
   
        int d;
    }
}

作用范围:

  1. 如果是定义在方法的参数列表中,那么在当前方法的任何位置都可以访问该局部变量。例如:
public void test(int a) {
   
    System.out.println(a);
    {
   
        System.out.println(a);
    }
    if(true) {
   
        System.out.println(a);
    }
}
  1. 如果是定义在方法中,那么就要看这个局部变量是“直接”位于哪一对大括号内。例如:
public void test() {
   
    int a;
    {
   
        int b;
    }
    if(true) {
   
        int c;
    }
}

观察局部变量a/b/c三个分别是“直接”位于哪一对大括号内,那么这个局部变量的作用范围就在哪一对大括号

如果访问的地方出了这个范围,那么是访问不到这个局部变量的。

默认值:局部变量是“没有”默认值的,我们只能显式的赋值之后才能使用该变量,否则会编译报错。

例如:

// 编译通过
// 只定义了变量但是没有使用
public void test() {
   
    int a;
}

// 编译报错
// 因为在使用局部变量之前没有赋值
public void test() {
   
    int a;
    System.out.println("a = " + a);
}

// 编译通过
// 只有在使用之前赋值就可以了
// int a = 1;
// 当然声明的同时就赋值也是可以的
public void test() {
   
    int a;
    a = 1;
    System.out.println("a = " + a);
}

声明周期:

当方法被调用,代码执行到局部变量的声明这一刻开始,这个局部变量就出现了,直到局部变量“直接”位于的大括号内中的代码执行结束的时候,该变量在内存中也就释放消失了。

例如:

// test方法执行完,变量a就没有了
public void test() {
   
    int a;
}

// if代码块执行完,变量b就没有了
public void test() {
   
    if(true) {
   
        int b;
    }
    // 这里是访问不到变量b的,编译报错
    System.out.println("b = " + b);
}

2. Java中的操作符(operator)

  1. 赋值操作符:
=  如: int x = 0,i = 1,j = 1;

*= 如: a *= b 等价于 a = a * b;

/= 如: a /= b 等价于 a = a / b;

%= 如: a %= b 等价于 a = a % b;

+= 如: a += b 等价于 a = a + b;

-= 如: a -= b 等价于 a = a - b;

其他的都是类似情况

a += 1; a++

特殊情况:i++ 和 ++i

i++表示先使用i的值,然后再让1自增1。

++i表示先让i的值自增1,然后再使用i的值。

例如:

int a = 1;
System.out.println(a++); // 1
System.out.println(a); // 2

int b = 1;
System.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值