java基础知识总结(二)

java基础相关,提纲参考javaguide
阅读提示:参考紧随标题

java基本语法

javaguide
https://snailclimb.gitee.io/javaguide/#/docs/java/basis/java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E6%80%BB%E7%BB%93?id=jdk-%e5%92%8c-jre
https://www.runoob.com/java
https://www.cnblogs.com/dolphin0520/p/3736238.html

1. java常量与变量

1. 常量与final修饰符

被final修饰的量为常量。如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后引用地址不能变即不能再让其指向另一个对象,但是此地址指向的对象的内容可以变。

  • 常量:程序执行时值不可变,使用前定义用符号(常量名一般大写)代替常量值使用。包括:字符串常量(eg “呵呵”)、整数常量(二进制(0b开头)、十进制、八进制(0开头)、十六进制(0x开头))、小数常量(十进制or科学计数法,默认为double,可写为12.3f单精度节省内存)、字符常量(eg.‘a’、'转义单引号)、布尔常量、空常量(null),final关键字定义常量
  • 常量值:又称为字面常量,它是通过数据直接表示的。

2. 静态常量、成员常量、局部常量

根据作用域分为静态常量、成员常量和局部常量。

public class HelloWorld {
   
    // 静态常量
    public static final double PI = 3.14;
    // 声明成员常量
    final int y = 10;

    public static void main(String[] args) {
   
        // 声明局部常量
        final double x = 3.3;
    }
}
  • final修饰静态变量(static修饰的变量)使其为静态常量
  • final修饰成员变量使其为成员常量:必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。final 修饰的成员变量在声明时没有赋值的叫 “空白 final 变量”。空白 final 变量必须在构造方法或静态代码块中初始化。
  • final修饰局部变量使其为局部常量:在使用前被赋值即可,最好是声明时就赋值。

2. 变量

https://www.yiibai.com/java/java_variable_types.html

1. java变量分类

  • 静态变量(类变量):static修饰,类中、方法、构造函数或块之外。随类的加载和消失而存在销毁,可以用类名调用也可以用对象调用。无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。静态变量除了被声明为常量外很少使用。静态变量存储在静态存储区,与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。JDK8之前,静态成员变量确实存放在方法区;但JDK8之后就取消了“永久代”,取而代之的是“元空间”,永久代中的数据也进行了迁移,静态成员变量迁移到了堆中
  • 成员变量(实例变量):无static修饰,类中、方法、构造函数或块之外。随对象的创建回收而存在和消失,只能由对象调用,在静态方法以及其他类中,使用完全限定名。实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;实例变量具有默认值。变量的值可以在声明时指定,也可以在构造方法中指定。为堆中的对象分配空间时,将为每个实例变量值创建一个槽。实例变量可以在使用之前或之后在类级别中声明。
  • 局部变量:方法、构造函数或块之中。随方法的调用和退出而创建和销毁,访问修饰符不能修饰局部变量(static含全局的意思、final含不可变的意思对于随方法调用创建的局部变量而言没意义),因而没有静态局部变量。只在声明它的方法、构造方法或者语句块中可见;局部变量是在栈上分配的,局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用

3. 静态常量与静态变量

https://blog.csdn.net/luzhensmart/article/details/86855029
http://c.biancheng.net/view/6053.html

public static final double PI = 3.14;//静态常量
public static int a = 1;//静态变量
  • 作用
    • 静态变量作用:可以被类的所有实例共享,因此静态变量可以作为实例之间的共享数据,增加实例之间的交互性。类的所有实例交互相同的一个变量,变量值可以变。
    • 静态常量作用:相比于静态变量只多了一个final关键字,final的意思是最终,值不可变。如果类的所有实例都包含一个相同的常量属性,则可以把这个属性定义为静态常量类型,从而节省内存空间。例如,在类中定义一个静态常量 PI
  • 加载
    JVM类的加载过程:加载–>验证–>准备–>解析–>初始化。
    • 静态变量:JVM在准备阶段,为类的静态变量分配内存,初始化为系统的默认值 (0 null 等 eg上边代码中a赋值为0)。初始化阶段:静态变量被赋值为指定值(eg a=1)
    • 静态常量:JVM在准备阶段,直接赋值为指定值(eg PI = 3.14)静态常量的初始化完成的比静态变量的早。常量如果属于 “编译期常量”,即在编译期即可确定常量值,则常量值存储在JVM内存中的常量区中,在类不加载时即可访问。如果常量值必须在运行时才能确定,如常量值是一个随机值,也会引起类的加载
    • egpublic static final int FINAL_VALUE_INT = new Random(66).nextInt();

2. java数据类型

java数据类型:基本数据类型、引用数据类型

1. 基本数据类型

8种:

  • 4个整型(默认值大小都为0,有符号二进制补码表示整数)
    • byte:8位,范围:-128~127,用在大型数组中节约空间,主要代替整数byte 变量占用的空间只有 int 类型的四分之一
    • short:16位,范围: − 2 15 至 2 15 − 1 -2^{15} 至 2^{15}-1 2152151
    • int:32位,范围: − 2 31 至 2 31 − 1 -2^{31} 至 2^{31}-1 231
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值