当前位置: 代码迷 >> 综合 >> JAVA语言语法_数据类型(part1)
  详细解决方案

JAVA语言语法_数据类型(part1)

热度:72   发布时间:2023-12-22 06:47:43.0

文章目录

      • JAVA语言语法
        • 一、数据类型
          • 1、标识符
          • 2、关键字
          • 3、常量、字面常量
          • 4、变量的声明、赋值、使用(重点)
          • 5、变量的内存(重点)
          • 6、变量的作用域
          • 7、基本数据类型之整数类型存储
          • 8、基本数据类型之整数类型变量
          • 9、基本数据类型之浮点类型常量的两种形式
          • 10、基本数据类型之浮点类型变量
          • 11、编码和字符集
          • 12、基本数据类型之字符类型1
          • 13、基本数据类型之字符类型2
          • 14、解释乱码问题
          • 15、基本数据之布尔类型
          • 16、基本数据类型转换问题
          • 17、引用数据类型 String (重点)
          • 18、引用数据类型String练习题 (重点)

JAVA语言语法

一、数据类型
1、标识符

? 标识符定义是:

? 四个可以:可以是数字、字母(不仅仅是26个字母,也包含中文、或者其他语言)、下划线_、美元符号$。

? 两不可以:不可以是以数字开头,不可以是关键字命名。

? 一见:见名知意,增强可读性。

? 大小写敏感:int a ; int A。

? 遵循驼峰命名:

? 类名:首字母大写,其余遵循驼峰命名

? 方法名,变量名:首字母小写,其余遵循驼峰命名

? 包名:全部小写,不遵循驼峰命名

2、关键字

? 常见关键字,见一个认识一个,关键词表如下:

? 官方地址点击跳转

在这里插入图片描述在这里插入图片描述

3、常量、字面常量

? 常量的定义是一个固定值,常见的是字面常量, 比如,123,‘a’,true等等,后面将会学习到的用final修饰的字符常量。

4、变量的声明、赋值、使用(重点)
package com.rucoding.d2;package com.rucoding.d2;
/*** 变量的声明、赋值、使用。* @author LiuYiXin**/
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;
/*** 变量的作用域* @author LiuYiXin**/
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,默认系统赋值为0int 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;/*** 整数变量* @author LiuYiXin**/
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.强转得加floatSystem.out.println(f1);
11、编码和字符集

编码和字符集

? 首先,查看一下常用的编码有哪些。其中ANSI在中国大陆即为GBK(以前是GB2321),最常用的是 GBK 和 UTF8无BOM格式。

在这里插入图片描述

12、基本数据类型之字符类型1

在这里插入图片描述

13、基本数据类型之字符类型2
package 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'; //制表符 tabSystem.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); //falseboolean 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);//***以下演示结论,重点***char c1 = 'a';int i3 = 13;int i4 = c1 + i3;System.out.println(i4);//结果110 short s1 = 10;
// char c2 = c1 + s1;//此时编译不通过
// short s2 = c1 + s1;//此时编译不通过 byte b2 = 10;
// char c3 = c1 + b2;//此时编译不通过 //结论: java在做运算的时候,如果操作数均在int范围内,那么一律在int空间内运算.//简而言之,就是当byte、char、short三种数据类型的变量做运算时候,结果为int类型 }
}

?

? 2、强制类型转换: 自动类型提升运算的逆运算。

(1).需要使用强转符:()
(2).注意点:强制类型转换,可能导致精度损失。

代码演示:

package com.rucoding.d2;
public class Variable05 {
    //强转类型转换: 自动类型提升运算的逆运算//1、需要强转符//2、强制类型转换,可能会导致精度损失public static void main(String[] args) {
    double d1 = 12.9;int i1 = (int)d1; //进行的是截断操作,精度损失System.out.println(i1);//12long l1 = 123;short s2 = (short)l1;System.out.println(s2);//没有精度损失int i2 = 128;byte b2 = (byte)i2;System.out.println(b2);//-128 精度损失 }
}
17、引用数据类型 String (重点)

? (1)、String 属于引用数据类型,表示字符串。

? (2)、声明String类型时候,使用一对双引号 " "

? (3)、String类型可以和8种基本数据类型变量做运算,且运算只能是连接的运算:+

? (4)、运算的结果还是 String类型。

代码演示:

package com.rucoding.d3;
/*** @author LiuYiXin**/
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' + "*"));//正确, 先括号执行,是连接操作
  相关解决方案