Java常量与变量
主要内容:
- 标识符
- 关键字
- 变量
- 数据类型
- 类型转换
- 常量
一,标识符与关键字
1,标识符
类的名字就是标识符
标识符的命名规则:
- 标识符只能由字母数字下划线和美元符($)组成,不能以数字开头
- 标识符不能有空格
- 标识符严格区分大小写
- 标识符不能是Java关键字和保留字
- 标识符的命名最好能反映其作用
2,关键字
3,保留字
goto, const等
二,变量的概念与数据类型
编程的学习主要是积累,就像学习英语一样,不断的积累单词和语法,才能达到熟练应用的目的
1,变量
变量的作用是把数据临时存储起来,提供之后的使用
变量三要素:变量类型,变量名与变量值
变量的命名规则:
- 满足标识符命名规则
- 符合驼峰法命名规则(如果变量的名字是一个单词,则单词小写如age;如果是多个单词,则首个单词的首个字母小写,其余单词首字母大写,如stuName)
- 尽量简单,做到见名知意
- 变量名长度没有限制
类的命名规则:
- 满足Pascal命名规范(如果变量的名字是由一个字母组成,首字母大写;多个单词组成,所有单词首字母都要大写)
2,数据类型
整型的应用场景:
按照存储数据范围的不同可以分为四种,分别是byte,short,int,long,数据表示范围依次增大,选择数据类型的时候可以参考表示范围来选取,但实际应用中,int和long是常用数据类型,,其余较少。
byte主要对二进制数进行存储,在文件的输入和输出流部分将会使用,用于二进制数据的传输。
short类型在有的需求中会遇到,比如对于登陆账号的状态表示,一般用0表示正常,1表示冻结,2表示已删除。这里数值固定,值也比较小,可以用short表示。
浮点型的应用场景:
浮点类型表示小数,包括float和double俩种类型,后者使用较多。
应用场景主要是数据精度较高,并且数据量较大的情况,比如医学军事化工天文等。
需要注意的是浮点型因为其表示方法的原因,会产生精度丢失的问题,所以会结合BigDecimal类进行使用。
注:
- *浮点数默认为 double 类型,float 在储存大型浮点数组时可以节省内存
- char 类型时一个单一的16位 Unicode 字符;2个字节
它的最小值是\u0000,最大值是\uffff(十进制的65535)
- boolean(布尔型)1个字节
三,数据类型的字面值及变量定义
Java中有三种表示整数的方法:十进制,八进制,十六进制
eg.123, 023, 0x1357, 0X3c, 0x1abcL(L或l表示长long整型的十六进制)
进制表示:
八进制:以0开头,包括0-7的数字
十六进制:以0x或0X开头,包括0-9数字,及字母a-f, A-F
1,整型浮点值
变量声明:
格式:数据类型 变量名;(注意中间一定要有空格)eg. int n, 声明整型变量n; long count; 声明长整型变量count
赋值:
使用"="运算符赋值,将运算符右边的值赋给左边的变量。
eg. int n;
n=3
也可以在定义变量的同时给变量赋值,即变量的初始化
eg. int n=3;
变量定义:
int octal=037; //定义int类型的变量存放八进制数据
long longNumber=0xa2cdf3ffL; //十六进制长整型数据存放
short shortNumber=123; //定义变量存放短整型数据
byte b=10; //定义变量存放byte类型数据
2,浮点型字面值
浮点型字面值默认情况下表示double类型,也可以在值后加d或D。
字面值也叫常量,是常量的一种
eg.123.43D
如表示float类型,则一定要在字面值后加f或F,否则会默认是double类型,将double类型的数值赋值给float类型的变量会报错。
即:把范围小的数赋值给范围大的变量会浪费存储空间;但是把范围大的数赋值给范围小的变量会报错。
3,基本数据类型变量的存储
- 数据类型分为基本数据类型和引用数据类型
- 引用数据类型包括数组和类等
- 类定义的变量又叫对象
- 数据类型按照作用范围分为:类级,对象实例级,方法级,块级
- 方法级变量又叫局部变量
- Java内存区域包括:栈,常量池和堆
- 方法定义的局部变量存储在栈中
- 大括号中定义的变量只在大括号中有效,不管{}是否有意义
4,字符型字面值
字符型字面值用单引号内的单个字符表示,比如:'a', '$', '我’(注意是单引号且一个字符)。用双引号引起来的是字符串字面值。
如何定义字符型变量?
char a='a';
char ch='65';
出现ch=A原因是ASCII码(American Standard Coad for Information Interchange, 美国标准信息交换代码)
因此整型和字符是可以相互转化的,char将整型换为ASCII码。
char的字面值数据范围不能超过65535,超过需要强制转换数据类型,但可能引起数据的丢失
char ch=65535;
char ch1=(char)65536;
ASCII码
- 基于拉丁字母的一套电脑编码系统
- 主要用于显示现代英语和其他西欧语言(没有中文)
- 使用7位或8位二进制数的组合来表示128或256种可能的字符
-7位二进制数组合是标准ASCII码(表示大小写字母,标点符号,美式英语的控制字符等)
-8位二进制数组合(后128位)是扩展的ASCII码,扩展了特殊符号,外来语言字母等
Unicode编码
又称为统一码、万国码,支持世界上所有的字符集
char c='\u005d'; //十六进制表示方式,Unicode表示法要在值前加前缀\u
5,布尔类型字面值
Java中,布尔值只能定义true和false,没有0,1
boolean b=true;
6,字符串字面值
字符串不属于基本数据类型,是类!
与基本数据类型有相似的地方,比如定义方式
双引号引起来的零个或多个字符,任意字符
String s=""
空格也占一个字符
7,变量综合案例
- int x=0,y=1;
- int x, y;
x=3;y=5;(注意中间是分号,不能是逗号,且这一行是俩个语句)
- 注意println(+a)里边的+就是加号,可以添加很多加号!!!
- System.out.print(); //语句是不换行的输出,即下一行输出不换行
- System.out.println(); //语句本身可以表示换行
- 换行亦可以使用System.out.print(x+" "+y+'\n');的形式,单引号引起来的一定是字符,\n就表示转义字符。
- System.out.print(x+"\t"+y+'\n');作用就是横向跳格,但是System.out.print(x+'\t'+y+'\n');单引号的话输出就变成了数字,把字符型换成整型,如果要使用单引号,可以System.out.print(""+x+'\t'+y+'\n')告诉'\t'是个字符串
- Java可以将字符或变量名定义为汉字并输出char 中文='中';
- 用科学计数法表示浮点型数据:double d=1.23E5; (e或E)
- double d1=.2; 表示0.2
四,类型转换
类型转换分为自动类型转换和强制类型转换(会引起数据精度丢失)
-自动类型转换 double a=32.32f;
-强制类型转换 char ch=(char)65536; //超过了范围65535
1,自动类型转换:
又叫隐式类型转换
转换顺序是:数据范围小的可以转换为数据范围大的,布尔类型不参与转换,比较特殊
2,强制类型转换:
把范围大的数据类型转换为范围小的数据类型
强制类型转换格式:(数据类型)数值 float f=(float)d;
3,一个栗子:
public class try1 {
public static void main(String[] args) {
// 将一个整型字面值67832赋值给char类型变量c
//并将c的值输出
int a=67832;
char c=(char)a;
System.out.println("c="+c);
//定义一个整型变量n,值为65
int n=65;
char c1=(char)n;
System.out.println("c1="+c1);
//定义一个字符型变量c1,赋值为n,并输出c1的值
//定义一个长整型变量l,值为987654321
long L=987654321;
//定义一个整型变量i,赋值为l,并输出i的值
int i=(int)L;
System.out.println("i="+i);
//定义一个float类型变量f,将变量l的值赋值给f,并输出f的值
float f=(float)L;
System.out.println("f="+f);
//将float的值f,重新赋值给变量l,并输出l的值
L=(long)f;
System.out.println("L="+L);
}
输出:
c=ࣸ
c1=A
i=987654321
f=9.8765434E8
L=987654336
五,常量
final int N=5; //在变量的定义之前加一个final,这样的话N就不能再改变了。
常量的命名一般用大写字母表示
好处是只需要修改final的值就可以
字面值也叫常量