Java常量与变量
1.标识符
在Java中,变量、常量、函数、类都可以称为程序实体,而他们的名称统称为标识符。
(1)标识符的命名规则
标识符可以由字母、数字、下划线(_)和$组成,不能以数字开头。
标识符严格区分大小写。
标识符不能是Java关键字和保留字。
标识符的命名最好能反映出其作用。
需要说明的是,以下划线(_)开头是合法的,但是在Go语言中不合法。
python语法中也是合法的,只不过表示私有变量。
2.关键字
关键字是被编程语言保留的字符序列,编程人员不能将其当作标识符,因此关键字也被称为保留字。
java中的关键字:
Java总共有50多个关键字,还有几个保留字,比如goto。
3.变量
在数学概念中,变量表示没有固定值且可以改变的数。
从计算机系统的角度来看,变量是一段或多段用来存储数据的内存。
变量的三个元素:变量类型、变量名和变量值。
变量的命名规则:
满足标识符的命名规则。
符合驼峰法命名规范。(变量都以小写字母命令,如果由多个单词组成,除首单词外其余单词第一个字母大写)
变量名的长度没有限制。
变量命名方式:
(1)先定义类型,再进行赋值
v_type v_name
v_name = value
(2)直接定义变量
v_type v_name = value
4.数据类型
(1)基本数据类型
不同数据类型,占据的内存大小:
不同数据类型的取值方位:
• byte:-128 ~ 127
• short: -32768 ~ 32767
• int: -2147483648 ~ 2147483647
• long: -9223372036854775808 ~ 9223372036854775807
(2)字面值
a.整型字面值
关于进制转化:https://www.cnblogs.com/yangmingxianshen/p/7720475.html
Java中有三种表示整数的方法:十进制、八进制、十六进制
二进制:用0和1来表示数,基数是2,进位规则是逢二进一,借位规则是借一当二。
八进制:用0-7来表示数,逢八进一。以0开头
十进制:用0-9来表示数,逢十进一。
十六进制:用0-9以及ABCDEF来表示数,逢十六进一。以0x或0X开头,ABCDEF可以使用小写表示。
示例:
123:十进制
023:八进制
0x1357:十六进制
0X3c:十六进制
变量定义示例:
int octal = 037 定义int类型变量,存放八进制数据
long longNumber = 0xa2cdf3ffL 定义long类型变量,存放十六进制数据
short shortNumber = 123 定义short类型数据,存放十进制数据
byte b = 10 定义int类型数据,存放2进制数据
需要注意的是:
在常规逻辑中,我们一直以为类似int、long这类数据,只能存储整数类型,其实是可以存储八进制、十进制、十六进制的数值的。
b.浮点型字面值
浮点型字面值默认情况下表示double类型,也可以在值后加d或D。
例如:123.43d或123.43D
如要表示float类型,则需要在字面值后加f或F
需要注意的是:
float f = 1234.23; //这样会报错。浮点型默认是double类型
将double数据类型的值转化为float,可能导致值得丢失。
c.字符型字面值
字符型字面值用单引号内的单个字符表示。如'a','b','$'
需要注意的是:
字符型字面值用单引号引起来。
单引号中必须只有一个字符。
如何定义字符型变量?
char a = ‘a’;
下面这个简单示例:
public class Char {
public static void main(String[] main) {
char a = 'a'; //a=a
System.out.println("a="+a);
char b = 65;
System.out.println("b="+b); // b=A
}
}
char类型使用两个字节表示,也就是范围是0-65535。
如果字面值超出char类型所表示的数据范围,需要进行强制类型转换。
为什么b不是打印65,而是打印A?在ASCII中,65对应A。
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)。
基于拉丁字母的一套编码系统。
主要用于显示现代英语和其他西欧语言。
Unicode(万国码):相对于ASCII来说,可以表示所有字符。
例如:
char c = ‘\u005d’
Unicode表示法,在值前加前缀\u
char c = '\u005d';
System.out.println("c="+c); //c=]
单引号表示字符型的字面值。
字符型字面值有什么意义所在吗?
d.布尔类型字面值
布尔值只定义为true和false。
示例:
boolean b = true;
e.字符串字面值
字符串并不是基础数据类型,但是与字符型字面值有些类似。
双引号引起来的0个或多个字符。
String a = “ ” //代表可以为空。
(3)基本数据类型变量的存储
a.按照类型来分类
数据类型分为基本数据类型和引用数据类型。
引用数据类型包括数组和类等。
类定义的变量又叫做对象。
b.按照作用范围分为
类级
对象实例级别
方法级(局部变量)
块级
在内存中,变量又可以分为栈、堆、常量池。
局部变量存储在栈当中。
5.类型转换
类型转换分为自动类型转换和强制类型转换。
自动类型转换又叫做隐式类型转换。
上方箭头反方向的都属于强制类型转换。
如果A类型的数据范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换。
强制转换示例:
public class TypeExchange {
public static void main(String[] args) {
//char类型和int类型之间的转换
char c=(char)65535;
int n;
n=c; //隐式类型转换
System.out.println(n);
c=(char)n;
//整型和浮点型的类型转换问题
int x = 100;
long y=x;
x=(int)y;
float f=1000000000000L;
System.out.println("f="+f); //f=1.0E12
}
}
、
6.常量
常量只是在变量前面加上final关键字。
常量一旦定义之后就无法修改。
final int n = 5;
7.var关键字
有时候可能类型的名字太长,写起来比较麻烦。可以使用var关键字来省略。例如
StringBuilder sb = new StringBuilder();
可以简写为:
var sb = new StringBuilder();
因为sb是StringBuilder的实例化对象,编译器可以自动推断出变量sb的类型。
在Go语言中定义变量使用关键字var,定义方式也是多种多样。定义常量使用关键字const。
python由于是动态类型的语言,不论是常量还是变量,都会在执行的时候自动识别。