Java基础之运算、关键字

本文深入探讨Java中的关键概念,包括参数传参机制、float与double的区别、switch语句的限制,以及final、static关键字的详细用法。解析了基本类型与引用类型的final特性,静态变量、方法、语句块、内部类的特性,以及它们在类初始化中的作用和顺序。

运算

参数传参

本质上是将对象的地址以值的方式传递到形参中

在方法中改变对象的字段值会改变原对象该字段值,因为引用的是同一个对象。

方法里和方法外的两个指针指向了不同的对象。

float与double

Java 不能隐式执行向下转型,因为这会使得精度降低。

1.1f 字面量才是 float 类型。

1.1 字面量属于 double 类型

字面量 1 是 int 类型

使用 += 或者 ++ 运算符会执行隐式类型转换。

switch 不支持 long

 

 

关键字

final

1.数据

  • 对于基本类型,final 使数值不变;
  • 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。

2.方法

声明的方法不能被子类重写
3.类

声明的类不允许被继承

static

1.静态变量

  • 静态变量:又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它。静态变量在内存中只存在一份。
  • 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。
public class A {

    private int x;         // 实例变量
    private static int y;  // 静态变量

    public static void main(String[] args) {
        // int x = A.x;  // Non-static field 'x' cannot be referenced from a static context
        A a = new A();
        int x = a.x;
        int y = A.y;
    }
}

2.静态方法

静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是说它不能是抽象方法

只能访问所属类的静态字段和静态方法,方法中不能有 this 和 super 关键字,因此这两个关键字与具体对象关联。

3.静态语句块

静态语句块在类初始化时运行一次。

4.静态内部类

 非静态内部类依赖于外部类的实例,也就是说需要先创建外部类实例,才能用这个实例去创建非静态内部类。而静态内部类不需要。

public class OuterClass {

    class InnerClass {
    }

    static class StaticInnerClass {
    }

    public static void main(String[] args) {
        // InnerClass innerClass = new InnerClass(); // 'OuterClass.this' cannot be referenced from a static context
        OuterClass outerClass = new OuterClass();
        InnerClass innerClass = outerClass.new InnerClass();
        StaticInnerClass staticInnerClass = new StaticInnerClass();
    }
}

静态内部类不能访问外部类的非静态的变量和方法。

5.静态导包

在使用今天方法和变量时不用再指定ClassName

import static com.xxx.ClassName.*

6.初始化顺序

静态变量和静态语句块优于实例变量和普通语句块,最后才是构造函数的初始化。

存在继承的情况下,初始化顺序为:

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量、普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值