第二章 Java基础语法(上)

第二章 Java基础语法(上)

第一节 标识符

定义:Java 对各种变量方法等要素命名时使用的字符序列称为标识符

凡是自己可以起名字的地方都叫标识符

**关键字:**被Java赋予了特殊含义的单词

保留字:现有Java版本中尚未使用,但以后版本可能会用作关键词使用,如goto、const

1、命名的规则(必须遵守,若不遵守编译不能通过)
①只能有字母 a-z A-Z ,数字 0-9,特殊字符 “_” 下划线 和 "$"美元符
②数字不能开头
③名字之间不能包含空格
④不能使用关键字和保留字,但是可以包含关键字和保留字
⑤Java 严格区分大小写,但是长度无限制

2、命名的规范(可以不遵守,但是会受到鄙视)
①包名:所有字母都小写。如:xxxyyyzzz
②类名、接口名:若有多个单词,每个单词的首字母都大写。如:XxxYyyZzz
③方法名、变量名:若有多个单词组成,第一个单词首字母小写,其余单词首字母都大写。
如:xxxYyyZzz
④常量名:所有字母都大写,每个单词之间以"_"隔开。 如:XXX_YYY_ZZZ

第二节 变量

**作用:**保存数据

“局部变量” & 成员变量

1、变量的格式:数据类型 变量名 = 值;

2、变量的概念:
①在内存中开辟一块内存空间
②该空间有类型(数据类型)有名称(变量名)
③在指定的范围内不断的变化

3、变量的注意:
①同一个作用域内变量名不能重复
②作用域:变量作用在所属的那对 {} 内
③先声明,后使用
④局部变量在使用前必须赋值

**练习:**编写一个Variable类,main方法中声明两个变量var1和var2并赋值,声明var3变量,
保存var1和var2之积,然后打印输出var3的值。

public class  Variable{
	public static void main(String[] args) {
		int var1 = 10;
		int var2 = 20;

		int var3 = var1 * var2;

		System.out.println(var3);

		System.out.println(var1 * var2);
	}
}

第三节 进制与位运算

一、进制的转换

对于整数,有四种表示方式:

**二进制:**0,1 ,满2进1.以0b或0B开头。

**十进制:**0-9 ,满10进1.

**八进制:**0-7 ,满8进1.八进制数被冠以0来表示。

**十六进制:**0-9及A-F,满16进1.十六进制数被冠以0X来表示(字母大小写均可)

如: 0x3f20(十六进制) 0732 (八进制)

十-十六-二进制间的转换

十六进制->十进制 :乘16 的操作

0X 23C -> 512+48+12 = 572

十进制->十六进制 :除16的操作

–572 -> 0X23C

572 / (16*16) = 2 余数 60

60 / 16 = 3 余数12 (0xC)

十六进制<->二进制

0X 23C -> 001000111100

八进制 <-> 二进制

1 000 111 100

2 01074

练习:

1、将以下十进制数转换为十六进制和二进制

​ 123 256 87 62

2、将以下十六进制数转换为十进制和二进制

​ 0x123 0x25F 0x38 0x62

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-el7wzmhx-1589173274652)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422202552233.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdpD4rxk-1589173274656)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422202610785.png)]

二、原码、补码、反码

所有数字在计算机底层都以二进制形式存在。

计算机以补码的形式保存所有的整数。

正数的原码、反码、补码都相同

负数的补码是其反码加1。

**原码:**直接将一个数值换成二进制数。

**反码:**除符号位以外,对反码其他位取反。

**补码:**反码+1

Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位

位运算符
运算符运算范例
<<左移3 << 2 = 12 --> 3*2*2=12
>>右移3 >> 1 = 1 --> 3/2=1
>>>无符号右移3 >>> 1 = 1 --> 3/2=1
&与运算6 & 3 = 2
|或运算6 | 3 = 7
^异或运算6 ^ 3 = 5
~取反~6 = -7

例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-41n6p9k7-1589173274659)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422191954213.png)]

位运算符的细节
<<空位补0,被移除的高位丢弃,空缺位补0。
>>被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
&二进制位进行&运算,只有1&1时结果是1,否则是0;
|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反

例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0MStYNHR-1589173274663)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422191939098.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZIYvT04-1589173274666)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422191954213.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fUaq68LK-1589173274669)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422192146254.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ncry2phG-1589173274671)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422192208378.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VjArAqQU-1589173274672)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200422192229450.png)]

负数的位表示

负数的位表示为正数取反加一

例如: 63 = 0x3F -> 0011 1111

​ -63 = 0xC1 ->1100 0001

在用位表示负数时,最高位为符号位,1表示负数

第四节 变量的数据类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w48F9MNB-1589173274674)(C:\Users\Wang\AppData\Roaming\Typora\typora-user-images\image-20200424205805001.png)]

基本数据类型(8种):
整型:byte(8位) short(16位) int(32位)-默认的类型 long(64位)
浮点型:float(32位) double(64位)-默认类型
字符型:char(2个字节-16位)
布尔型:boolean

引用数据类型:
|-- 类(class) ------ String
|–接口(interface)
|–数组([])

java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’

类 型占用存储空间表数范围
byte1字节=8bit位-128 ~ 127
short2字节-215 ~215-1
int4字节-231 ~ 231-1
long8字节-263 ~ 263-1
class VariableTest1 {
	public static void main(String[] args) {
		//1. 变量的格式:数据类型 变量名 = 值;

		//整型:byte(8位)  short(16位)  int(32位)-默认的类型  long(64位)
		byte b1 = 123;
		short s1 = 12345;
		int i1 = 1235467;

		System.out.println(b1);
		System.out.println(s1);
		System.out.println(i1);

		//注意:声明 long 型变量时,值后必须加 L 或 l
		long l1 = 12423124356L;
		System.out.println(l1);

		//浮点型: float(32位)  double(64位)---默认类型
		//注意:声明 float 型变量时,值后必须加 F 或 f
		//注意:声明 double 型变量时,值后可以加 D 或 d
		float f1 = 15.6f;
		double d1 = 15.63d;
		System.out.println(f1);
		System.out.println(d1);

		//字符型:char(2个字节-16位) --- 以 Unicode 编码存储的(包含了 ASCII、中文、日文、特殊字符等)
		//char 型变量用于存储单个字符, char 变量的值必须使用单引号
		char c1 = 'a';
		char c2 = '中';
		char c3 = '$';
		char c4 = '1';
		char c5 = ' ';

		System.out.println((int)c1);
		System.out.println((int)c2);
		System.out.println((int)c3);
		System.out.println((int)c4);
		System.out.println((int)c5);

		//转义字符
		char c6 = '\n';
		char c7 = '\t';

		char c8 = '\u0006';

		System.out.println(c6);
		System.out.println(c7 + "===");
		System.out.println(c8);

		//boolean 布尔值,只存储两个值,true 和 false
		//true 代表真
		//false 代表假
		boolean boo1 = true;
		boolean boo2 = false;
		System.out.println(boo1);
		System.out.println(boo2);

		//String : 字符串
		//注意:声明 String 型变量时,值必须使用双引号
		String str = "我大尚硅谷威武!";
		System.out.println(str);

		System.out.println("HelloWorld!");
	}
}

二、数据类型之间的转换
自动类型转换(自动升级):小容量转大容量。系统自动完成
①byte short char —> int —> long —> float —> double
②byte short char 三者之间不进行计算,若计算都将自动升级为 int 再做运算
③boolean 不参与运算

​ ④String 与任何基本数据类型使用 + 连接符,都将自动串接成 String强制类型转换:大容量转小容量。需要使用强转符"(需要转换的类型)"可能损失精度。

class VariableTest2 {
	public static void main(String[] args) {
		//自动类型转换(自动升级)
		/*byte b = 123;
		short s = b; //自动升级
		System.out.println(s);

		int i1 = 100;

		int res = i1 + b; //自动类型转换
		System.out.println(res);

		//注意:
		long l1 = 123L;
		float f1 = 15.6E2F;

		float f2 = l1 + f1;
		System.out.println(f2);

		char c1 = 'a';
		short s2 = 10;

		int i2 = c1 + s2;
		System.out.println(i2);

		char c2 = 'A';
		char c3 = 'B';
		int i3 = c2 + c3;
		System.out.println(i3);*/

		//强制类型转换
		/*int i1 = 266;
		byte b1 = (byte)i1;

		System.out.println(b1);*/

		int a = 10;
		boolean b = false;
		double d = 15.6;
		float f = .22f;

		String str = "哈哈哈";

		String newStr = str + a + b + d * f;
		System.out.println(newStr);

		String str2 = a + d + str + b + f;
		System.out.println(str2);

		String str3 = "";
	}
}

练习:

1、改进Variable类,main方法中使用double类型声明var1和var2变量,然后用var2保存var1与var2之商。

2、声明字符串变量str,用str串接的形式表示上述计算并打印输出结果。

class VariableExer1 {
	public static void main(String[] args) {
		/*double var1 = 15.6;
		double var2 = 22.22;*/

		double var1 = 15.6, var2 = 22.22;

		var2 = var1 / var2;

		String str = "var1 / var2 = " + var2;

		System.out.println(str);
	}
}

第五节 运算符

算术运算符

运算符运算范例结果
+正号+33
-负号b=4; -b-4
+5+510
-6-42
*****3*412
/5/51
%取模7%52
++ ++自增(前):先运算后取值 自增(后):先取值后运算a=2;b=++a; a=2;b=a++;a=3;b=3 a=3;b=2
- - - -自减(前):先运算后取值 自减(后):先取值后运算a=2;b=- -a a=2;b=a- -a=1;b=1 a=1;b=2
+字符串相加“He”+”llo”“Hello”
class VariableTest3 {
	public static void main(String[] args) {
		int a = 12;
		int b = 5;

		//除法
		int res = a / b; //
		System.out.println(res);

		System.out.println(1234 / 1000 * 1000);

		//取模(求余)
		System.out.println(a % b);

		System.out.println(1 % 5);
	}
}

赋值运算符

赋值运算符:= += -= *= /= %=

比较运算符

运算符运算 范例 结果
==相等于 4==3 false
!=不等于 4!=3 true
<小于 4<3 false
>大于 4>3 true
<=小于等于 4<=3 false
>=大于等于 4>=3 true
instanceof检查是否是类的对象 “Hello” instanceof String true

逻辑运算符

aba&ba|b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse

【面试题】&& 与 & 的区别? || 与 | 的区别?
&& : 称为短路与,当左边表达式结果为 false 时,右边表达式将不再计算
&:是位运算符,当用于逻辑运算时,无论左边表达式结果为 true 还是false ,右边表达式都计算

class VariableTest4 {
	public static void main(String[] args) {
		/*int a = 10;

		a += 5; //相当于  a = a + 5;
		System.out.println(a);//15

		a %= 3; //相当于 a = a % 3;
		System.out.println(a);*/

		//【面试题】
		/*short s = 5;
		//s = s + 1; //编译?NO   运行?
		s += 1; //s = (short)(s+1);编译?YES
		System.out.println(s);*/

		//比较运算符(关系运算符):运算结果都为 boolean 值
		/*int a = 20;
		int b = 20;

		boolean boo = a == b;
		System.out.println(boo);

		System.out.println(a != b);*/

		//逻辑运算符: 运算结果都为 boolean 值
		//需求:判断一个数是不是大于10 小于 20
		int a = 9;

		//错误的写法
		//boolean boo = 10 < a < 20;

		/*boolean boo = a > 10 && a < 20;
		System.out.println(boo);*/

		/*boolean b1 = true && true;
		boolean b2 = true && false;
		boolean b3 = false && true;
		boolean b4 = false && false;

		System.out.println(b1);
		System.out.println(b2);
		System.out.println(b3);
		System.out.println(b4);*/

		/*boolean b1 = true || true;
		boolean b2 = true || false;
		boolean b3 = false || true;
		boolean b4 = false || false;

		System.out.println(b1);
		System.out.println(b2);
		System.out.println(b3);
		System.out.println(b4);*/

		/*boolean b = !true;
		System.out.println(b);*/
		
		/*boolean b = a > 10 & a++ < 20;
		System.out.println(b);
		System.out.println(a);*/

		boolean b1 = true ^ true;
		boolean b2 = true ^ false;
		boolean b3 = false ^ true;
		boolean b4 = false ^ false;

		System.out.println(b1);
		System.out.println(b2);
		System.out.println(b3);
		System.out.println(b4);
	}
}

三元运算符

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

注意:
​ ①表达式1 和 表达式2 结果的数据类型必须保持一致!
​ ②条件表达式结果为 true 时,执行表达式1,否则执行表达式2

class VariableTest5 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;

		/*int res = a > b ? a - b : a + b;
		System.out.println(res);*/

		//System.out.println(a > b ? a-b : "哈哈哈");

		//获取两个数的较大值
		int max = a > b ? a : b;
		System.out.println(max);
	}
}

练习:

1、使用三元运算符,获取两个数中的较大数

2、使用三元运算符,获取三个数中的较大数

class VariableExer2 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 30;

		/*int max = a > b ? a : b;
		System.out.println(max);

		max = max > c ? max : c;
		System.out.println(max);*/

		int max = (a > b) ? (a > c ? a : c) : (b > c ? b : c);

		System.out.println(max);
	}
}

ps.运算符的优先级

. () {} ; ,
R—>L++ – ~ !(data type)
L—>R* / %
L—>R+ -
L—>R<< >> >>>
L—>R< > <= >= instanceof
L—>R== !=
L—>R&
L—>R^
L—>R|
L—>R&&
L—>R||
R—>L? :
R—>L= *= /= %=
+= -= <<= >>=
>>>= &= ^= |=
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值