java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap)

java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap),第1张

java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap) java语言语法— Java标识符、Java关键字、Java变量和常量(包括Java字节码文件反汇编命令javap) 1.标识符

(1)读音:biao zhi fu
(2)什么是标识符?

(摘自百度百科)

简单来说,标识符就是一个名字

(3)标识符命名的规则:

  1. 组成部分(4个可以):数字、字母(尽量用英文,虽然汉子、日文、俄语都可以)、下划线_、美元符号 $
  2. 2个不可以:第一,不能以数字开头(例如1num不可以,但是num1可以);第二,不能采用Java中的关键字命名(Java 的关键字有其特殊的用途用于编译,否则编译器无法编译Java文件了)
  3. 命名的长度没有限制,但是尽量不要太长,而且最好养成习惯,不要胡乱命名,尽量见名知义,这样可读性也高,利于变成效率的提高
  4. Java大小写敏感(例如,int num; 和int NUM ;中的num和NUM 完全是两个变量)
  5. 有时遵循驼峰命名,有时不需要驼峰命名
    比如:类名:首字母大写,遵循驼峰命名(例如,HelloMyCode)
    变量名、方法名:首字母小写,遵循驼峰命名(例如,makeChoices)
    包名:全部小写(例如,com.bones.test)
2.关键字

关键字被赋予特殊用途,不能用来作为标识符
Java中的关键字都是小写
下面的关键字了解就可以,不用故意去记住,因为真正敲代码的人不可能不知道下面的关键字,用多了就记住了
不过我个人有时候会有一些误区,比如误以为Java中的true这些是关键字,后来一查居然不是,这些只是Java的常用字面量

官网有提供Java关键字的罗列:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

下面是分类的罗列:

3.常量

(1)常量:程序运行过程中不会变化的量。
(2)分类:

4.变量

变量本质上就是代表一个”可 *** 作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而 *** 纵这个“存储空间”存储的值。Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

(1)变量的声明

public class testVar{
	public static void main(String[] args){
		//定义一个int类型的变量:
		int age ;
	}
}

上面的代码编译成功:

在JavaSE_Code 文件下产生了对应的字节码文件:

现在利用反编译工具将字节码代码还原为源代码:
(将上面的TestVal.class文件拖至反编译工具中)
(关于反我的反编译工具,请见我的博客https://blog.csdn.net/qq_51550750/article/details/121536690)

反编译结果:

其实这就说明:一个变量只是定义但是没有赋值,就相当于什么都没做。

还要注意一点:如果变量只是定义而没有赋值,那么使用这个变量就会报错,例如:

(2)变量的赋值

public class TestVar{
	public static void main(String[] args){
		//定义一个int类型的变量:
		int age;
		//将age赋值为10这个字面常量
		age = 10;
	}
}

再次编译产生字节码文件,然后反编译:
编译:

反编译结果:

发现两句活合成了一句话(定义和赋值合成了一句话),而且变量的名字改变了,这说明其实其实变量名对于编译这个过程无关紧要

那么变量的赋值可不可以重复呢?
例如:

public class TestVar{
	public static void main(String[] args){
		//定义一个int类型的变量:
		int age;
		//将age赋值为10这个字面常量
		age = 10;
		age = 20;
		age = 9;
		age = 9;
	}
}

说明一个变量可以重复赋值,但是要注意一个问题:同一个变量不可以重复定义:

例如下面的代码会报错:

public class TestVar{
	public static void main(String[] args){
		//定义一个int类型的变量:
		int age;
		//将age赋值为10这个字面常量
		age = 10;
		age = 20;
		age = 9;
		age = 9;
		int a = 0;
		int a ;
	}
}

(3)变量的使用

变量的使用很简单:

public class TestVar{
	public static void main(String[] args){
		//定义一个int类型的变量:
		int age;
		//将age赋值为10这个字面常量
		age = 10;
		age = 20;
		age = 9;
		age = 9;
		int a = 0;
		//int a ;
		System.out.println(age);
		System.out.println(a+10);
	}
}

编译和执行:

(4)变量的内存

简单来画就是:

下面举一个简单的例子说明底层的变量赋值的过程:

public class TestVal02{
	public static void main(String[] args){
		int x = 1, y = 2;
		int z = x + y;
	}
}

通过javap.exe命令来反汇编:(但是要先产生字节码文件)

看字节码指令或许就可以看出个大概了吧。。。

5.基本数据类型----整型

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5609063.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存