- JAVA语言语法
- 一、数据类型
- 1、标识符
- 2、关键字
- 3、常量、字面常量
- 4、变量的声明、赋值、使用(重点)
- 5、变量的内存(重点)
- 6、变量的作用域
- 7、基本数据类型之整数类型存储
- 8、基本数据类型之整数类型变量
- 9、基本数据类型之浮点类型常量的两种形式
- 10、基本数据类型之浮点类型变量
- 11、编码和字符集
- 12、基本数据类型之字符类型1
- 13、基本数据类型之字符类型2
- 14、解释乱码问题
- 15、基本数据之布尔类型
- 16、基本数据类型转换问题
- 17、引用数据类型 String (重点)
- 18、引用数据类型String练习题 (重点)
标识符定义是:
四个可以:可以是数字、字母(不仅仅是26个字母,也包含中文、或者其他语言)、下划线_、美元符号$。
两不可以:不可以是以数字开头,不可以是关键字命名。
一见:见名知意,增强可读性。
大小写敏感:int a ; int A。
遵循驼峰命名:
类名:首字母大写,其余遵循驼峰命名
方法名,变量名:首字母小写,其余遵循驼峰命名
包名:全部小写,不遵循驼峰命名
2、关键字 常见关键字,见一个认识一个,关键词表如下:
官方地址点击跳转
3、常量、字面常量 常量的定义是一个固定值,常见的是字面常量, 比如,123,‘a’,true等等,后面将会学习到的用final修饰的字符常量。
4、变量的声明、赋值、使用(重点)package com.rucoding.d2;package com.rucoding.d2;
public class Variable01 {
public static void main(String[] args) {
//变量的定义方式: java是强类型的语言,即是声明变量,必须为其声明类型 ,例如 type varName [=varValue];
//int age;
int age = 10;
System.out.println("age=" + age); //局部变量必须经过初始化
System.out.println("10年后的age:"+ (age + 10));
}
}
5、变量的内存(重点)
变量的内存,内存只占用一块空间。引用指向,例如,int age = 10 , 在内存开辟一块空间0x0101(假设),负责存放数字10,定义一个变量名为age的,将开辟的空间值赋值给age变量。
6、变量的作用域 变量的作用域:变量可以分为成员变量和局部变量。
成员变量是直接分配内存,定义成员变量可以不经过初始化,JVM系统会自动为其分配默认值的。
局部变量:定义在方法内的变量,在参与运算之前必须进行初始化操作,若仅仅是接收某一表达式运算的结果,则可以不进行初始化操作。
package com.rucoding.d2;
public class Variable02 {
//定义成员变量,并且不赋值
static int age;
public static void main(String[] args) {
//main方法内定义局部变量
int age = 18; //只在main方法体起作用,必须经过初始化
System.out.println(age);//就近输出原则
printAge();//调用打印age方法,此时age的值为成员变量的age,默认系统赋值为0
int a = 10, b;
b = a + 10; //变量b仅仅是接收某一表达式的运算结果,可以不进行初始化操作。
System.out.println("b=" + b);
}
//打印age方法
public static void printAge(){
System.out.println(age);
}
}
7、基本数据类型之整数类型存储
整数类型:byte、short、int、long类型
java的整数类型默认是int类型,声明long类型的常量的须后加 ‘l’ 或者 ‘L’ 。
java程序中变量通常使用int类型(约21亿),除非表示的数很大,才会使用long类型
8、基本数据类型之整数类型变量package com.rucoding.d2;
public class Variable03 {
public static void main(String[] args) {
//1.整型: byte(1字节=8bit) short(2字节=16bit) int(4字节) long(8字节)
//① byte范围: 8bit, 每个存储0或1 两种可能,则2的8次方=256.为了表示正负,分成一半,即是范围 -128 ~ 127 (中间0)
byte b1 = 12;
byte b2 = -128;
// byte b3 = 128; //编译不通过
System.out.println(b1);
System.out.println(b2);
short s1 = 128;
int i1 = 1024;//通常情况下,定义整数类型,使用的是int类型(约21亿)
//② 声明long类型,必须是'l'或 'L'结尾
long l1 = 324344434334344L; //不加默认是int类型,必须加L声明 (此时不加,会报错超出int类型的值)
System.out.println(l1);
}
}
9、基本数据类型之浮点类型常量的两种形式
JAVA的浮点型常量默认是double类型,声明 float类型常量时候, 须后加 ‘f’ 或者 ‘F’。
10、基本数据类型之浮点类型变量//2.浮点型:float(4字节) double (8字节) //① 浮点型,表示带小数点的数值 //② float表示的数值范围比long还大。涉及底层存储方式... double d1 = 12.3; System.out.println(d1 + 1); //③ 声明float变量时候,须后加 'f' 或者 'F' float f1 = 12.3F; //不加f或F.则浮点型默认为double类型,此时大类型double转为小类型float.强转得加float System.out.println(f1);11、编码和字符集
编码和字符集
首先,查看一下常用的编码有哪些。其中ANSI在中国大陆即为GBK(以前是GB2321),最常用的是 GBK 和 UTF8无BOM格式。
12、基本数据类型之字符类型1 13、基本数据类型之字符类型2package com.rucoding.d3;
public class CharacterChar {
public static void main(String[] args) {
//字符类型: char字符类型 (1字符 = 2字节)
//① 定义char类型,只能使用一对单引号,内部只能使用一个字符
char c1 = 'a';
// char c2 = 'ab'; //编译不通过
char c2 = '1';
char c3 = '中';
char c4 = 'F';
System.out.println(c1);
//表示形式: ①.声明一个字符; ②.转义字符; ③.直接使用Unicode值来表示字符型变量
char c5= 'n'; //换行符
c5 = 't'; //制表符 tab
System.out.print("Hello" + c5);
System.out.println("World");
//直接使用Unicode来表示
char c6 = 'u0043';
System.out.println(c6);
}
}
14、解释乱码问题
编写一段测试代码,另存到本地的磁盘,文件的格式默认为UTF-8,此时打开cmd窗口,进行编译运行操作, 发现输出的中文乱码了。图示测试:
解释:cmd窗口默认的编码格式为GBK格式, 可以修改java源文件的格式, 另存选择 ANSI编码(即GBK格式)。修改完成,重新编译运行, 即可正常输出中文格式。
15、基本数据之布尔类型 //布尔类型: boolean
//boolean类型只能取两个值,true 或者false
//使用场景: 常常是在条件判断,或者循环结构下使用的
// boolean型变量是类变量,则默认值为false.
static boolean defalutResult;//
System.out.println(defalutResult); //false
boolean isMarried = true;
if(isMarried){
System.out.println("你不能参加"单身"party了");//这里想将 单身 用引号括起来,利用转义字符"
}else{
System.out.println("你可以考虑一下");
}
16、基本数据类型转换问题
前提: 这里讨论分析的只有七种基本数据类型之间的运算, 不包含boolean类型。
1、自动类型转换:容量小的类型自动转换为容量大的数据类型。即是
当容量小的数据类型的变量与容量大的数据类型的变量做运算时候,结果自动提升为容量大的数据类型。(这里的容量大小指的是 该数据类型的范围大小。比如:float容量大于long容量的)。
特别强调: 当byte、char、short类型进行运算的时候,结果为int,为啥这么规定, 可能是考虑它们的存储范围小,容易超出,所以如此设计???
代码练习:
package com.rucoding.d2;
public class Variable04 {
public static void main(String[] args) {
//自动类型提升
byte b1 = 12;
int i1 = 128;
// byte b2 = b1 + i1; //此时编译不通过
int i2 = b1 + i1;
long l1 = b1 + i1;
System.out.println(i2);
System.out.println(l1);
float f1 = b1 + i1;
System.out.println(f1);
/
public class DataTypeString {
public static void main(String[] args) {
//String类型的定义: 使用一对双引号""
String s1 = "hello";
String s2 = "a";
String s3 = "";
System.out.println(s2);
// char c = '';//编译不通过,必须定义一个字符内容
//连接运算
int number = 1001;
String numberStr = "学号: ";
String info = numberStr + number; // + 为连接运算
System.out.println(info);
boolean b1 = true;
String info1 = info + b1;
System.out.println(info1); //+ 为连接运算
}
}
18、引用数据类型String练习题 (重点)
代码演示1:
char c = 'a'; int num = 10; String str = "hello"; System.out.println(c + num + str); //前+是做运算的,a转为97, 后+是连接字符串的, 输出107hello System.out.println(c + str + num); //前+是连接字符串的,连接为ahello,结果为String类型,连接后面的 ahello10 System.out.println(c + (num + str));//先运行括号的,有String类型,进行连接操作,结果是String类型,继续连接,输出a10hello System.out.println(str + num + c);//开始为String类型,结果还是String类型,输出hello10a
小结: 做java运算时候,判断 加号 + 是做连接还是运算的操作,看String类型出现与否。做运算,char类型进行转义,有String类型为连接操作。
代码演示2:
//输出* *
System.out.println("* *"); //正确
System.out.println('*' + 't' + '*');//单引号为char字符, +表示的运算操作,结果int类型,表示数字
System.out.println('*' + "t" + '*'); //正确, 字符串连接操作
System.out.println('*' + 't' + "*");//先运算,结果int类型的,再进行连接
System.out.println('*' + ('t' + "*"));//正确, 先括号执行,是连接操作



