变量与常量
标识符
标识符的命名规则:
1)标识符可以由字母、数字、下划线(_)和美元符($)组成,不能以数字开头;
2)标识符严格区分大小写;
3)标识符不能是Java关键字和保留字;
4)标识符的命名最好能反映出其作用。
例如合法的标识符:
Hello , hello_test , _hello , Void , abc$123
非法的标识符:
class , 123abc , abc 123 , void
关键字
标识符不能为关键字和保留字,那我们来认识一下哪些是Java中的关键字:
编程语言学习经验谈
像学习英语、日语等语言一样,接受语言的语法。
变量
什么是变量
变量的三个元素:变量类型、变量名和变量值。
我们可以通过一间酒店的房间作为例子来类比说明:
房间 | 变量 |
入住的客人(张三、李四) | 变量值(1、Lisi) |
房间名字 (101、203) | 变量名(name、age、sex) |
房间类型(单人间、标准间、商务间) | 变量类型(int、float、char) |
变量名的命名规则:
1)满足标识符命名规则;
2)符合驼峰法命名规范。
示例:
年龄 age
学生姓名 stuName
要求:
1)简单,做到见名知意;
2)变量名的长度没有限制。
类的命名规则:
满足Pascal命名法。
示例:
HelloWorld
数据类型
基本数据类型变量的存储
数据类型分为基本数据类型和引用数据类型。
引用数据类型包括数组和类等。
类定义的变量又叫对象。
变量按照作用范围可以分为:
-类级、对象实例级、方法级、块级。
整型字面值
Java中有三种表示整数的方法:十进制、八进制、十六进制。
如:123(十进制),023(八进制), 0x1357(十六进制), 0X3c(十六进制), 0x1abcL(表示长整型的十六进制数)。
进制表示
八进制:以0开头,包括0~7的数字。
如:037 , 056
十六进制表示:以0x或0X开头,包括0~9的数字,及字母a~f,A~F;a/A表示数字10,以此类推。
如:0x12,0xabcf , 0XABCFF
变量声明
格式: 数据类型 变量名;
例:
int n; //声明整型变量n
long count; //声明长整型变量count
赋值
在Java中使用 "=" 运算符进行赋值。
"=" 叫作赋值运算符,将运算符右边的值赋给左边的变量。
例:
int n; //定义int型变量n
n = 3; // 将3赋值给n
我们也可以在定义变量的同时给变量赋值,即变量的初始化。
例:
int n = 3; //定义int类型变量存放十进制数据
int octal = 037; //定义int类型变量存放八进制数据
long longNum = 0xa2cdf3ffL; //定义long类型变量存放十六进制长整型数据
short shortNum = 123; //定义变量存放短整型数据
byte b = 10; //定义变量存放byte类型数据
浮点型字面值
浮点型字面值默认情况下表示double类型,也可以在值后加d或D。
如:123.43d或123.43D
若表示float类型,则需要在字面值后加f或F。
如:23.4f或23.4F
public class FloatDemo {
public static void main(String[] args) {
//定义一个单精度浮点型变量,存放1234.328
float f = 1234.328f;
System.out.println("f="+f);
//定义一个双精度浮点型变量,存放5623.465
double d = 5623.465;
System.out.println("d="+d);
//double类型变量表示的数据范围是最大的
double d1 = 123L;
System.out.println("d1="+d1);
//变量间的赋值
double d2 = d;
System.out.println("d2="+d2);
}
}
字符型字面值
字符型字面值用单引号内的单个字符表示。
如: 'a' 'b' '$' 单引号中必须只有一个字符。
定义字符型变量
char a = 'a';
char ch = 65;
public class CharDemo {
public static void main(String[] args) {
//定义一个变量存放字符'a'
char a = 'a';
System.out.println("a="+a);
char ch = 65;
System.out.println("ch="+ch);
//char表示的数据范围是0~65535
char ch1 = 65535;
System.out.println("ch1="+ch1);
//字面值超出表示数据范围,需要进行强制类型转换
char ch2 = (char)65536;
System.out.println("ch2="+ch2);
}
}
知识点补充
ASCII码
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)。
它是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
ASCII码表示
使用7位或8位二进制数组合来表示128或256种可能的字符。
-7位二进制数组合——标准ASCII码,用于表示大小写字母、标点符号、美式英语中的控制字符等。
-8位二进制数组合(后128位)——扩展ASCII码,用于表示特殊符号,外来语言的字母等。
Unicode编码
Unicode编码的目标是支持世界上所有的字符集
char c = '\u005d';
Unicode表示法,在值前加前缀\u
布尔类型字面值
布尔值只能定义为true和false。
例:
boolean b = true;
boolean flag = false;
字符串字面值
字符串不属于基本数据类型,它是类!
双引号引起来的0个或多个字符。
例:
String s = "";
public class StringDemo {
public static void main(String[] args) {
//定义一个空字符串
String s1 = "";
System.out.println("s1="+s1);
//定义一个字符串,内容时Hello
String s2 = "Hello";
System.out.println("s2="+s2);
//定义一个包含unicode字符的字符串
String s3 = "A\u005d\u005fBCD";
System.out.println("s3="+s3);
//定义一个包含空格的字符串,空格也会占字符
String s4 = "Hello World";
System.out.println("s4="+s4);
}
}
转义字符
字母前面加上捺斜线"\"来表示那些常见的不能显示的ASCII字符。我们把这些字符称为转义字符,如\t,\n等,因为后面的字符,都不是它本来的ASCII字符意思了。
综合案例
public class VarDemo {
public static void main(String[] args) {
//定义两个整型变量x,y
//第一种方式,声明变量的同时赋值——变量的初始化
//int x = 3,y = 5;
//先声明变量,再赋值
int x,y;
x=3;
y=5;
System.out.println("x="+x);
System.out.println("y="+y);
//关于换行的问题
//函数换行
System.out.println();
//转义字符换行
System.out.println(x+y+'\n');
//关于转义字符
System.out.println(x+'\t'+y+'\n'); //输出为 27 原因 字符本身就是一个整型,此处相当于把字符转换成整数,然后求和输出了
//解决方法
//第一种,最左侧加上 "" ,变成字符串的连接
System.out.println(""+x+'\t'+y+'\n');
//第二种,把单引号改为双引号
System.out.println(x+"\t"+y+'\n'); //输出为 3 5
System.out.println("\n\'"+x+"\'"); // 输出 '3'
//定义一个汉字的字符
char ch = '爱';
System.out.println(ch);
char 中文 = '中'; //不建议中文作为变量名
System.out.println(中文);
//用科学计数法表示浮点型数据
double d = 1.23E5;
float f = 1.23e5f;
double d1 = .2;
System.out.println("d="+d);
System.out.println("f="+f);
System.out.println("d1="+d1);
}
}
类型转换
类型转换分为自动类型转换和强制类型转换。
自动类型转换顺序(又叫隐式类型转换)
我们可以通过下图,总结出自动类型转换的规律:低级类型到高级类型的自动类型提升。
强制类型转换
如果A类型的数据表示范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换。
如:
double d = 123.4;
float f = (float)d;
强制数据类型转换的格式:(数据类型)数值
public class TypeExchange {
public static void main(String[] args) {
//char类型和int类型之间的转换
char c = (char)65536;
int n;
n = c; //隐式类型转换
c = (char)n; //强制类型转换
//整型和浮点型的类型转换问题
int x = 100;
long y = x;
x = (int)y;
float f = 1000000000000L;
System.out.println("f="+f); // f=1.0E12
//long 类型 转换成 float/double 会出现丢失精度问题
float f1 = 142152563462345231L;
System.out.println("f1="+f1); // f1=1.4215256E17
}
}
常量
常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
格式:final int n = 5;
public class FinalDemo {
public static void main(String[] args) {
int m = 5;
final int N = 5;
m = 10;
// N = 11; 编译器报错,不允许修改
final double PI = 3.14;
final double MIN_VALUE = 0;
}
}