虽然想把Java的基本语法速通了,但是看完了之后还是感觉有些东西与c有所不同,而且对于一些基本的计算机眼原理也有更深的理解,所以还是有必要写一些总结。

一、关键字、保留字

关键字:被Java赋予特殊含义的字符串。

       >官方规范中有50个关键字

       >true、false、null虽然不是关键字,但是可以当作关键字看待

保留字:goto、const

二、标识符

标识符:凡是可以自己命名的地方的都是标识符。

        如:类名、变量名、方法名、接口名、包名、常量名等

标识符命名规则:必须遵守否则编译不通过

        >由26个英文字母大小写,0~9,_或$组成

        >不可以用数字开头

        >不可以使用关键字和保留字,但能包含关键字和保留字

        >Java严格区分大小写,长度无限制

        >标识符不能包含空格

三、变量的基本使用

1.变量的理解:内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化

2.变量的构成:数据类型、变量名、存储的值

3.Java中变量的声明格式:数据类型 变量名 = 变量值

class VariableTest1 
{
	public static void main(String[] args) 
	{
		//定义变量的方式1:
		char gender;//过程1:变量的声明
		gender = '男';//过程2:变量的赋值(又叫初始化)
		gender = '女';

		//定义变量的方式2:声明与初始化合并
		int age = 10;

		System.out.println(age);
		System.out.println("age = " + age);
		System.out.println("gender = " + gender);
		
		//在同一个作用域内,不能声明两个同名的变量
		//char gender = '女';

		gender = '男';
		
		//由于number之前没有声明类型,即当前number变量没有提前定义。所以编译不通过。
		//number = 10;

		byte b1 = 127;
		//超出byte的范围
		//byte b1 = 128;
	}
}

说明:

1.定义变量时,变量名要遵守标识符命名的规则和规范。

2.变量都有其作用域,变量只在作用域范围内有效。

3.在同一作用域内,不能声明两个同名的变量。

4.定义好变量后,就可以通过变量名的方式对变量进行调用和运算。

5.变量赋值时,必须满足变量的数据类型,并且在数据类型有效范围内变化。

四、基本数据类型变量

1.Java中的变量按照数据类型来分类:

        基本数据类型:

                整型:byte、short、int、long

                浮点型:float、double

                字符型:char

                布尔型:boolean

        引用数据类型:

                 类(class)

                数组(array)

                接口(interface)

                枚举(enum)

                注解(record)    

测试整型和浮点型:

class VariableTest 
{
	public static void main(String[] args)
	{
		int i1 = 10;
		int i2 = i1;

		long l1 = i1;

		float f1 = l1;

		byte b1 = 10;
		int i3 = b1;

		//byte b2 = b1 +i1;
		/*VariableTest.java:30: 错误: 不兼容的类型: 从int转换到byte可能会有损失
                byte b2 = b1 +i1;
                             ^
		1 个错误*/

		//特殊的情况1:
		//byte 、short之间做运算结果会自动类型转换为int类型。
		byte b3 = 12;
		short s1 =10;
		//short s2 = b3 + s1;
		//编译不通过

		//byte b4 = b3 + s1;
		//编译不通过

		int i4 = b3 + s1;
		//编译通过

		//特殊情况2:char
		char c1 = 'a';

		//char c2 = c1 + b3;
		//编译不通过

		int i5 = c1 + b3;
		//编译通过
		
		//***********************************
		//练习1:
		long l2 = 123L;
		long l3 = 123;
		//与l2不同,l3为123的int类型自动类型提升为long类型。

		//long l4 = 123123123123;
		//123123123123理解为int类型,因为超出了int范围,所以报错。
		long l5 = 123123123123L;
		//此时的123123123123L是使用8字节储存的long类型的值。

		//练习2:
		float f2 = 12.3F;
		//float f3 = 12.3;
		//不满足自动类型提升的范围(double ---> float)。

		//练习3:
		//规定1:整型常量规定为int类型。
		byte b5 = 10;
		//byte b6 = b5 + 1;
		//编译不通过
		int i6 = b5 + 1;

		//规定2:浮点型常量规定为double类型。
		//float f3 = b5 + 12.3;
		//编译不通过
		double d1 = b5 + 12.3;
	}
}

测试字符型和布尔型:

class  VariableTest2
{
	public static void main(String[] args) 
	{
		char c1 = 'a';
		char c2 = '中';
		char c3 = '1';
		char c4 = '%';
		char c5 = 'y';

		//编译不通过
		//char c6 = '';
		//char c7 = 'ab';

		//表示形式2:直接使用Unicode值来表示字符型常量。
		char c8 = '\u0036';
		System.out.println(c8);

		//表示形式3:使用转义字符
		char c9 = '\n';
		char c10 = '\t';
		System.out.println("hello" + c10 + "world");

		//表示形式4:使用具体字符对应的数值(比如ASCLL码)
		char c11 = 97;
		System.out.println(c11);//输出为:a

		//布尔类型:boolean
		//只要两个取值:true、false
		boolean bo1 = true;
		boolean bo2 = false;

		//编译不通过
		//boolean bo3 = 0;
		//常使用在流程控制语句中。
		boolean isMarried = true;
		if (isMarried)
		{
			System.out.println("已婚");
		}
		else
		{
			System.out.println("单身");
		}
		//在内存分配中Boolean类型变量占用4个字节。

	}
}

数据类型变量间的运算规则

1.自动类型提升

/*
测试基本数据类型变量间的运算规则。

1.可以做运算的基本数据类型有7种,不包括boolean类型。
2.运算规则包括:
								(1)自动类型提升
								(2)强制类型转换
规则:当容量小的变量与容量大的变量做运算时,结果制动转换为容量大的数据类型。、

byte、short、char ---> int ---> long ---> float ---> double 
特殊:byte 、short、char之间做运算结果会自动类型转换为int类型。
规定:整型常量规定为int类型,浮点型常量规定为double类型。

说明:这里指的容量大与小,并不是指占用内存空间的大小,而是指表示数据的范围的大小。
	如:long(8字节)与运算float(4字节)会转换为float类型。

*/
class VariableTest 
{
	public static void main(String[] args)
	{
		int i1 = 10;
		int i2 = i1;

		long l1 = i1;

		float f1 = l1;

		byte b1 = 10;
		int i3 = b1;

		//byte b2 = b1 +i1;
		/*VariableTest.java:30: 错误: 不兼容的类型: 从int转换到byte可能会有损失
                byte b2 = b1 +i1;
                             ^
		1 个错误*/

		//特殊的情况1:
		//byte 、short之间做运算结果会自动类型转换为int类型。
		byte b3 = 12;
		short s1 =10;
		//short s2 = b3 + s1;
		//编译不通过

		//byte b4 = b3 + s1;
		//编译不通过

		int i4 = b3 + s1;
		//编译通过

		//特殊情况2:char
		char c1 = 'a';

		//char c2 = c1 + b3;
		//编译不通过

		int i5 = c1 + b3;
		//编译通过
		
		//***********************************
		//练习1:
		long l2 = 123L;
		long l3 = 123;
		//与l2不同,l3为123的int类型自动类型提升为long类型。

		//long l4 = 123123123123;
		//123123123123理解为int类型,因为超出了int范围,所以报错。
		long l5 = 123123123123L;
		//此时的123123123123L是使用8字节储存的long类型的值。

		//练习2:
		float f2 = 12.3F;
		//float f3 = 12.3;
		//不满足自动类型提升的范围(double ---> float)。

		//练习3:
		//规定1:整型常量规定为int类型。
		byte b5 = 10;
		//byte b6 = b5 + 1;
		//编译不通过
		int i6 = b5 + 1;

		//规定2:浮点型常量规定为double类型。
		//float f3 = b5 + 12.3;
		//编译不通过
		double d1 = b5 + 12.3;
	}
}

2.强制类型转换

/*
规则:
1、如果需要将容量大的类型转换为容量小的类型,需要用到强制类型转换。
2、强制类型转换需要使用强转符:()。在()内指明需要转换的数据类型。
3、强制类型转换的过程中,可能导致精度损失。
*/
class VariableTest3 
{
	public static void main(String[] args) 
	{
		double d1 = 12;//自动类型提升

		//int i1 = d1;
		int i2 = (int) d1;
		System.out.println(i2);

		long l1 = 123;
		//short s1 = l1;
		short s2 = (short) l1;
		System.out.println(s2);

		//精度损失的例子1:
		double d2 = 12.9;
		int i4 = (int) d2;
		System.out.println(i4);//输出12

		//精度损失的例子2:
		int i5 = 128;
		byte b1 = (byte) i5;
		System.out.println(b1);//输出-128
	}
}

六、String类的使用、与基本数据类型变量间的运算

String的认识:字符串。使用一对""表示,内部包含0个、1个或多个字符。

String与8种基本数据类型变量间的运算:+表示连接的意思。运算的结果为String类型。

/*
基本数据类型与String类的运算

1、String类,属于引用数据类型,俗称字符串。
2、String类型的变量,可以使用一对“”的方式来赋值。
3、String声明的字符串内部,可以包含0个,1个或多个字符。
4、String与基本数据类型的运算只能相加,其中‘+’表示连接的意思。

*/
class StringTest
{
	public static void main(String[]args)
	{
			String str1 = "HelloWorld!";
			System.out.println("str1");//输出str1
			System.out.println(str1);//输出Hello World!

			int num1 = 10;
			boolean b1=true;
			String str2 = "hello";
			System.out.println(num1 + str2);//输出10hello
			System.out.println(b1 + str2);//输出truehello

			String str3 = str2 + b1;
			String str4 = str2 + b1 + num1;
			System.out.println(str3);//输出hellotrue
			System.out.println(str4);//输出hellotrue10

			//String str5 = num1  + b1 + str2;
			//编译不通过,因为num1与b1分别为int与boolean类型,都为基本数据类型‘+’会进行相加,但是boolean类型无法与int类型相加。
			//而上面的str4中,str2先与b1连接成一个新的字符串,再与num1连接。

	}
}

七、运算符

1.算术运算符

包括:+ 、 -  、*  、/  、%  、(前)++  、++(后)  、(前)--  、--(后)  

2.赋值运算符

包括:=  、+=  、-=  、*=  、/=  、%=   

3.比较运算符

包括:==  、!=  、>  、  <  、>=  、<=  、instanceof(后面再学)

其中:除instanceof外均适用于基本数据类型(>  、  <  、>=  、<=不适用于boolean类型)运算结果为boolean类型。

==  、!=可以适用于引用数据类型。

4.逻辑运算符

包括:&、&&、|、||、!、^

&与&&、|与||的区别为:&与|都会将两个判断条件都执行一次;

而&&如果前为false则不执行下个条件直接完成判断,前为true时才会将两个条件都判断一次;

||也一致如果前为true则不执行下个条件直接完成判断,前为false时才会将两个条件都判断一次。

5.位运算符

包括:<<、>>、>>>、&、|、^、~

<<:在一定范围,每向左移动一位,结果就在原有基础上*2。

>>:在一定范围,每向右移动一位,结果就在原有基础上/2。

6.条件运算符

三目运算符(三元运算符):(条件表达式)?表达式1:表达式2

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐