标识符(给包、类、方法、变量、常量、接口等起名时使用的字符序列)
标识符: 凡是自己命名的地方都叫标识符。 如: 包名、类名、接口名、方法名、变量名、常量名等等
关键字: 被Java赋予了特殊含义的单词
注意:不要刻意去背,后面会慢慢介绍每个关键字的用法。
命名规则(必须遵守,否则编译不能通过):
①以字母(采用Unicode字符集)、下划线、$ 开头
②其余部分可以是:字母(采用Unicode字符集)、下划线、$、数字
③其中不能包含空格
④不能使用关键字和保留字,但是可以包含关键字和保留字
⑤Java严格区分大小写,长度无限制
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
命名规范(可以不遵++守,但是会受到鄙视)
包名: 所有字母都小写。 如: xxxyyyzzz
类名、接口名: 若出现多个单词,每个单词首字母大写。如: XxxYyyZzz
方法名、变量名: 若出现多个单词,第一个单词的首字母小写,其余单词首字母大写。如: xxxYyyZzz
常量名: 所有字母都大写,若出现多个单词,之间以"_"分隔。 如: XXX_YYY_ZZZ
public class Welcome{
public static void main(String[] args){
int $abc = 3;
int $ = 5;
int _123=5;
//int 123abc = 6; //标识符不能以数字开头
//int abc# = 3; //标识符不能包含除了字母、数字、下划线、$之外的其他字符
//int class = 3;
int 北京 = 10; //java内部采用了Unicode字符集,universal--通用的意思,包含中文、英文等等地球上所有语言的所有字符。
//Unicode采用的是2个字节表示一个字符
String str = "刘";
System.out.println(str.getBytes().length);//2
char c = 'c';
}
变量:用于保存数据
变量的概念:
①在内存中开辟一块空间
②该空间有类型(数据类型)有名称(变量名)
变量是通过使用变量名来访问这块区域的,该区域的数据可以在同一类型范围内不断变化。
内存了解,先混个眼熟,成员变量和局部变量所属作用范围的那块内存区域称作栈帧。
变量的格式: 数据类型 变量名 = 值;
1、局部变量
定义在方法内或语句块内。 从属于方法或语句块。
使用之前,必须要手动初始化!
//声明一个变量
数据类型 变量名; 如: int var;
//为变量赋值
变量名 = 值; 如: var = 10;
//声明一个变量并赋值
如: int var = 20;
2、成员变量(实例变量 field)
定义在类里面、方法外面。从属于对象。
如果我们没有手动初始化成员变量,系统会自动初始化。初始化的规则如下:
基本数据类型:
byte short int ---> 初始值为 0
long ---> 初始值为 0L
float ----> 初始值为 0.0F
double ----> 初始值为 0.0
char ----> 初始值为 '\u0000' -----> '\u0000' 是空的意思 什么都没有的意思
boolean ----> 初始值为 false
引用数据类型: -----> null
|--- 类(class)
|--- 接口(interface)
|--- 数组([])
|--- 枚举类型(enum)
|--- 注解类型(Annotation)
3、静态变量(类变量)
定义在类里面、方法外面、使用static修饰。从属于类。
如果我们没有手动初始化静态变量,系统会自动初始化。初始化规则同成员变量。
变量的注意:
①作用域:变量作用在所属的那对 {} 内
②先声明,后使用
③同一个作用范围内,变量名不能重复
变量的数据类型
注意:后面文章中出现的“^”代表的是次方哈~
基本数据类型(8种):
整型: byte(8位,1个字节,范围: -128~127) short(16位,2个字节,范围: -2^15~2^15-1) int(32位,4个字节,范围: -2^31~2^31-1,也就是正负12亿)-默认类型 long(64位,4个字节,范围: -2^63~2^63-1)
浮点型: float(32位) double(64位)-默认类型
字符型 : char(16位,2个字节,范围: 2^16-1,可以把0到65535之间的整数转型为char) ---- 采用Unicode的16位编码方式进行编码(ASCII、中文、日文、特殊字符等等)
布尔型: boolean
引用数据类型:引用了堆里面的一个内存地址,我们一般用4个字节表示。
|--- 类(class) ----------------- String 用于存储字符串
|--- 接口(interface)
|--- 数组([])
|--- 枚举类型(enum)
|--- 注解类型(Annotation)
声明变量的时候注意:
①当声明 long 型变量时,值后需要加 L 或 l ;
如: long l1 = 12345l; long l2 = 235457L; long l = 465;//自动升级
②当声明 float 型变量时,值后必须加 F 或 f 如: float f1 = 15.6F;
③当声明 double 型变量时,值后可以加 D 或 d
④当声明 char 型变量,值必须使用 单引号。 如: char c = 'A';
⑤双引号引起来的都作为 String 类型的值
基本数据类型中存放的是变量的值
引用数据类型中存放的是对象的内存地址
public class TestType {
String name;//实例变量,成员变量,属性----------方法外部,类的内部定义的
static int num = 10;//静态变量
public static void main(String[] args){
int n;//方法或语句块内,定义的才是局部变量,需要先赋值才能被使用
//int m = n+3;
int x,y,z;
final int C=34;//常量一般要使用大写来定义,最终变量只能被赋值一次,不可改变 ,
//C = 35;//error
final int MAX_SPEED = 120;//多个单词用下划线
// static int F;
int a = 10;//十进制
int a2 = 010;//八进制,逢8进1,以0开头
int a3 = 0xf;//十六进制,逢16进1,以0x开头
// byte b = 200;
int a5 = 10;//如果什么都不写,10默认就是int
long a6 = 200;
byte b2 = 100; //如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
long a7 = 11123213232L;//使用大写L,不要用小写l表示长整形
long l = 3;//尽量不要用l作为变量
long l2 = l+3; //L问题
//JDK7新特性_二进制整数_下划线分隔符
int num1 = 0b0000_0000_0000_0000_0000_0000_0000_0011;//0b开头表示二进制数,与内存中的格式一样表示
int num2 = 1_2312_3131;
int num3 = 0b0010;
}
public void ss(){
//static int F;//方法里面不可以静态的变量
}
}
public class TestFloatDataType {
public static void main(String[] args){
//double d = 3.14; //浮点数常量默认类型是double。
//float f = 6.28F;//如果想转为浮点float,可以在后面加上f或F
double d2 = 314e-2; //采用科学计数法的写法
System.out.println(d2);
/*
浮点数存在舍入误差,不能精确表示。比如[0,1]之间的小数就有无穷多个
浮点数在内存中的表示是另外一种形式
float 占4个字节 大于 int 占4个字节 也大于 Long 占8个字节 ,因为整数能精确表示,
double 占8个字节 大于 Long 占8个字节 ,因为长整数能精确表示
如果需要进行不产生舍入误差的精确计算,需要使用 BigDecimal,如银行系统就需要精确计算
BigDecimal ------------>它表示超大的小数 double 占8个字节
BigInteger ------------>它表示超大的整数 Long 占8个字节
*/
float f = 0.1f;
double d = 1.0/10;//浮点数的计算有误差,有可能是0.9999999.。。。。
System.out.println(f);
System.out.println(d);
System.out.println(f==d); //false 最好避免比较中使用浮点数
}
}
public class TestCharDataType {
public static void main(String[] args){
/*
char c1 = 'a';
char c2 = '国'; //unicode 2: 0-65535
char c3 = '\n';
System.out.print(c1);
System.out.print(c3);
System.out.print(c2);
*/
/**
* 字符占2个字节,允许有65535个字符,运算时直接当作整数来运算
*/
/*
char c4 = 'a';
int i = c4 + 2;
System.out.println(i);//99 , 可以查看标准ascii码表
char c5 = (char)i; //强制转型,可以把0到65535之间的整数转型为char
System.out.println(c5);
//循环打印a-z
for(int j=0;j<26;j++){
char temp = (char)(c4+j);
System.out.print(temp);
}
//java里面的字符串,是定义成:String类了。
String str = "abcdefghijklmnopqrstuvwxyz";
System.out.println("\n"+str);
*/
/**
* boolean类型 只占1位,不是1个字节
*/
boolean b = false; //false
if(b){ //不推荐if(b==true),容易丢掉"="号。如:if(b=true) 这样容易出问题
System.out.println("true");
}
}
}
变量的运算
数据类型的转换:
自动类型转换: 小容量转大容量。(系统自动完成)
①byte short char 三者之间不进行运算,都将自动提升成 int 之后再运算
char c = 'A';
char c2 = 'B';
int i = c + c2;
short s = 15;
int i2= c + s;
②byte short char ---> int ---> long ---> float ---> double
long l = 12346;
float f2 = 12.667F;
float ff = l + f2;
③boolean 不参与运算的
④任何基本数据类型与String类型使用 "+" 连接符运算,都将自动串接成String类型
强制类型转换:大容量转小容量。 需要使用 强转符: (需要转换的类型)
标识符: 凡是自己命名的地方都叫标识符。 如: 包名、类名、接口名、方法名、变量名、常量名等等
关键字: 被Java赋予了特殊含义的单词
注意:不要刻意去背,后面会慢慢介绍每个关键字的用法。
命名规则(必须遵守,否则编译不能通过):
①以字母(采用Unicode字符集)、下划线、$ 开头
②其余部分可以是:字母(采用Unicode字符集)、下划线、$、数字
③其中不能包含空格
④不能使用关键字和保留字,但是可以包含关键字和保留字
⑤Java严格区分大小写,长度无限制
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
命名规范(可以不遵++守,但是会受到鄙视)
包名: 所有字母都小写。 如: xxxyyyzzz
类名、接口名: 若出现多个单词,每个单词首字母大写。如: XxxYyyZzz
方法名、变量名: 若出现多个单词,第一个单词的首字母小写,其余单词首字母大写。如: xxxYyyZzz
常量名: 所有字母都大写,若出现多个单词,之间以"_"分隔。 如: XXX_YYY_ZZZ
public class Welcome{
public static void main(String[] args){
int $abc = 3;
int $ = 5;
int _123=5;
//int 123abc = 6; //标识符不能以数字开头
//int abc# = 3; //标识符不能包含除了字母、数字、下划线、$之外的其他字符
//int class = 3;
int 北京 = 10; //java内部采用了Unicode字符集,universal--通用的意思,包含中文、英文等等地球上所有语言的所有字符。
//Unicode采用的是2个字节表示一个字符
String str = "刘";
System.out.println(str.getBytes().length);//2
char c = 'c';
}
Unicode和GBK_各种字符集的关系
变量:用于保存数据
变量的概念:
①在内存中开辟一块空间
②该空间有类型(数据类型)有名称(变量名)
变量是通过使用变量名来访问这块区域的,该区域的数据可以在同一类型范围内不断变化。
内存了解,先混个眼熟,成员变量和局部变量所属作用范围的那块内存区域称作栈帧。
变量的格式: 数据类型 变量名 = 值;
1、局部变量
定义在方法内或语句块内。 从属于方法或语句块。
使用之前,必须要手动初始化!
//声明一个变量
数据类型 变量名; 如: int var;
//为变量赋值
变量名 = 值; 如: var = 10;
//声明一个变量并赋值
如: int var = 20;
2、成员变量(实例变量 field)
定义在类里面、方法外面。从属于对象。
如果我们没有手动初始化成员变量,系统会自动初始化。初始化的规则如下:
基本数据类型:
byte short int ---> 初始值为 0
long ---> 初始值为 0L
float ----> 初始值为 0.0F
double ----> 初始值为 0.0
char ----> 初始值为 '\u0000' -----> '\u0000' 是空的意思 什么都没有的意思
boolean ----> 初始值为 false
引用数据类型: -----> null
|--- 类(class)
|--- 接口(interface)
|--- 数组([])
|--- 枚举类型(enum)
|--- 注解类型(Annotation)
3、静态变量(类变量)
定义在类里面、方法外面、使用static修饰。从属于类。
如果我们没有手动初始化静态变量,系统会自动初始化。初始化规则同成员变量。
变量的注意:
①作用域:变量作用在所属的那对 {} 内
②先声明,后使用
③同一个作用范围内,变量名不能重复
变量的数据类型
注意:后面文章中出现的“^”代表的是次方哈~
基本数据类型(8种):
整型: byte(8位,1个字节,范围: -128~127) short(16位,2个字节,范围: -2^15~2^15-1) int(32位,4个字节,范围: -2^31~2^31-1,也就是正负12亿)-默认类型 long(64位,4个字节,范围: -2^63~2^63-1)
浮点型: float(32位) double(64位)-默认类型
字符型 : char(16位,2个字节,范围: 2^16-1,可以把0到65535之间的整数转型为char) ---- 采用Unicode的16位编码方式进行编码(ASCII、中文、日文、特殊字符等等)
布尔型: boolean
引用数据类型:引用了堆里面的一个内存地址,我们一般用4个字节表示。
|--- 类(class) ----------------- String 用于存储字符串
|--- 接口(interface)
|--- 数组([])
|--- 枚举类型(enum)
|--- 注解类型(Annotation)
声明变量的时候注意:
①当声明 long 型变量时,值后需要加 L 或 l ;
如: long l1 = 12345l; long l2 = 235457L; long l = 465;//自动升级
②当声明 float 型变量时,值后必须加 F 或 f 如: float f1 = 15.6F;
③当声明 double 型变量时,值后可以加 D 或 d
④当声明 char 型变量,值必须使用 单引号。 如: char c = 'A';
⑤双引号引起来的都作为 String 类型的值
基本数据类型中存放的是变量的值
引用数据类型中存放的是对象的内存地址
public class TestType {
String name;//实例变量,成员变量,属性----------方法外部,类的内部定义的
static int num = 10;//静态变量
public static void main(String[] args){
int n;//方法或语句块内,定义的才是局部变量,需要先赋值才能被使用
//int m = n+3;
int x,y,z;
final int C=34;//常量一般要使用大写来定义,最终变量只能被赋值一次,不可改变 ,
//C = 35;//error
final int MAX_SPEED = 120;//多个单词用下划线
// static int F;
int a = 10;//十进制
int a2 = 010;//八进制,逢8进1,以0开头
int a3 = 0xf;//十六进制,逢16进1,以0x开头
// byte b = 200;
int a5 = 10;//如果什么都不写,10默认就是int
long a6 = 200;
byte b2 = 100; //如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
long a7 = 11123213232L;//使用大写L,不要用小写l表示长整形
long l = 3;//尽量不要用l作为变量
long l2 = l+3; //L问题
//JDK7新特性_二进制整数_下划线分隔符
int num1 = 0b0000_0000_0000_0000_0000_0000_0000_0011;//0b开头表示二进制数,与内存中的格式一样表示
int num2 = 1_2312_3131;
int num3 = 0b0010;
}
public void ss(){
//static int F;//方法里面不可以静态的变量
}
}
public class TestFloatDataType {
public static void main(String[] args){
//double d = 3.14; //浮点数常量默认类型是double。
//float f = 6.28F;//如果想转为浮点float,可以在后面加上f或F
double d2 = 314e-2; //采用科学计数法的写法
System.out.println(d2);
/*
浮点数存在舍入误差,不能精确表示。比如[0,1]之间的小数就有无穷多个
浮点数在内存中的表示是另外一种形式
float 占4个字节 大于 int 占4个字节 也大于 Long 占8个字节 ,因为整数能精确表示,
double 占8个字节 大于 Long 占8个字节 ,因为长整数能精确表示
如果需要进行不产生舍入误差的精确计算,需要使用 BigDecimal,如银行系统就需要精确计算
BigDecimal ------------>它表示超大的小数 double 占8个字节
BigInteger ------------>它表示超大的整数 Long 占8个字节
*/
float f = 0.1f;
double d = 1.0/10;//浮点数的计算有误差,有可能是0.9999999.。。。。
System.out.println(f);
System.out.println(d);
System.out.println(f==d); //false 最好避免比较中使用浮点数
}
}
public class TestCharDataType {
public static void main(String[] args){
/*
char c1 = 'a';
char c2 = '国'; //unicode 2: 0-65535
char c3 = '\n';
System.out.print(c1);
System.out.print(c3);
System.out.print(c2);
*/
/**
* 字符占2个字节,允许有65535个字符,运算时直接当作整数来运算
*/
/*
char c4 = 'a';
int i = c4 + 2;
System.out.println(i);//99 , 可以查看标准ascii码表
char c5 = (char)i; //强制转型,可以把0到65535之间的整数转型为char
System.out.println(c5);
//循环打印a-z
for(int j=0;j<26;j++){
char temp = (char)(c4+j);
System.out.print(temp);
}
//java里面的字符串,是定义成:String类了。
String str = "abcdefghijklmnopqrstuvwxyz";
System.out.println("\n"+str);
*/
/**
* boolean类型 只占1位,不是1个字节
*/
boolean b = false; //false
if(b){ //不推荐if(b==true),容易丢掉"="号。如:if(b=true) 这样容易出问题
System.out.println("true");
}
}
}
变量的运算
数据类型的转换:
自动类型转换: 小容量转大容量。(系统自动完成)
①byte short char 三者之间不进行运算,都将自动提升成 int 之后再运算
char c = 'A';
char c2 = 'B';
int i = c + c2;
short s = 15;
int i2= c + s;
②byte short char ---> int ---> long ---> float ---> double
long l = 12346;
float f2 = 12.667F;
float ff = l + f2;
③boolean 不参与运算的
④任何基本数据类型与String类型使用 "+" 连接符运算,都将自动串接成String类型
强制类型转换:大容量转小容量。 需要使用 强转符: (需要转换的类型)
注意:可能损失精度。