Java基础(一)——关键字、变量、数据类型、运算符、流程控制

一、先来了解下什么是注释

注释就是用通俗易懂的语言对代码进行描述解释,方便自己和他人阅读。
1、- 单行注释:
//注释内容
2、- 多行注释:
/*注释内容
注释内容
注释内容
*/
3、- 文档注释:
/**注释内容
*注释内容
*注释内容
*/

二、Java 中的常用关键字:

Java 语言预先定义好的,有指定意义的标识符,组成程序的基本元素。

1、abstract 表示抽象

2、boolean 基本数据类型

3、break 跳出循环

4、byte 基本数据类型

5、case 与 switch 搭配使用

6、catch 与 try 搭配使用,表示捕获异常

7、char 基本数据类型

8、class 表示一个类

9、continue 跳出循环

10、do 与 while 搭配使用,表示循环

11、double 基本数据类型

12、else 与 if 搭配,流程控制

13、enum 枚举类型

14、extends 继承

15、final 修饰常量

16、float 基本数据类型

17、if 流程控制

18、implements 实现接口

19、import 引入某个类

20、int 基本数据类型

21、interface 表示接口

22、long 基本数据类型

23、native 表示本地方法

24、new 创建对象

25、package 表示包

26、private 描述私有

27、public 共有

28、return 返回值

29、short 基本数据类型

30、static 表示静态

31、super 表示父类

32、switch 与 case 搭配使用

33、synchronized 表示线程同步

34、this 表示当前实例

35、throw 抛出异常

36、throws 方法中主动抛出异常

37、try 与 catch 搭配使用

38、void 表示方法没有返回值

39、volatile 表示保证线程读取到最新值

40、while 表示循环

三、 变量

变量有三要素:

  • 数据类型(不同的数据要用不同的数据类型来表示)
  • 变量名(可以自己取名字,替代内存地址)
  • 变量值(存储在内存中的数据)

四、 使用变量

1、声明变量的数据类型和变量名(包含数字,字母,下划线,$,不能包含空格,运算符,不能用关键字命名,不能以数字开头),大小写可以混用,首单词应该小写,后续单词的首字母大写。

userId,studentName(驼峰式命名法)

2、给内存空间赋值,该值就是变量的值。

五、 Java的数据类型

1. 基本数据类型(一共有8种)

byte、int 、short、long、float、double、char、boolean

(1)数值类型(整数、小数)

byte 1 个字节 (8位)

int 4 个字节(32位)

short 2 个字节(16位)

long 8 个字节(64位)

float 4 个字节(32位) 单精度浮点型

double 8 个字节(64位)双精度浮点型
(2)非数值类型(文本)

char 字符 2 个字节(16位)

boolean 1/8 个字节、判断逻辑是否成立 true 1/false 0

2. 引用数据类型

(1)类(class)、(2)接口(interface)、(3)数组
例如:String类型,String是项目中必不可少且使用最多的数据类型,它属于引用数据类型中“类”的范畴。

        Java把内存分成两种,一种叫做栈内存,一种叫做堆内存,在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名。

      引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!

3、基本数据类型和引用数据类型的区别:

      (1)基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;

      (2)引用数据类型在被创建时,首先要在栈上给其引用分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

六、数据类型转换

1、- 自动转换

Java 可以自动对某些数据类型进行自动转换。

规则:只能由低字节向高字节进行转换,反之则不行。

byte(1个字节)->short(2个字节)->int(4个字节)->long(8个字节)->float(4个字节)->double(8个字节)

2、- 强制类型转换

Java 无法自动转换的数据类型,开发者可以通过强制手段进行转换。

double num = 10.0;
int num2 = (int)num;

一般来讲强制类型转换可能会造成精度损失。

七、运算符

1、- 赋值运算符

数据类型 变量名 = 数值/变量; (将等号右边的值赋值给左边)

//1、创建变量用来记录张三的体重
double weight1 = 70.5;
//2、创建变量表示李四的体重
double weight2 = 60.5;
System.out.println("交换之前:张三的体重是"+weight1+",李四的体重是"+weight2);
System.out.println("进行交换:");
double temp = weight1;
weight1 = weight2;
weight2 = temp;
System.out.println("交换之后:张三的体重是"+weight1+",李四的体重是"+weight2);
2、- 算术运算符

- 基本算术运算符

*+、-、*、/、%(取余运算)、++(自增1)、--(自减1)*

变量1 + 变量2

变量1 - 变量2

变量1 * 变量2

变量1 / 变量2

变量1 % 变量2

变量++、++变量

变量--、--变量

变量++:先操作,再运算。

++变量:先运算,再操作。

- 复合算术运算符

+=、-=、*=、/=、%=

变量1 += 变量2:先求出变量1和变量2之和,再把计算结果赋值给变量1,
相当于变量1 = 变量1 + 变量2
3、- 关系运算符(一般用于比较判断)

==、!=、>、<、>=、<=
(==、!=)这两可以用于非数值类型;后四位只能用于数值类型比较

4、- 逻辑运算符

逻辑运算符只能用于 boolean 类型的数据运算,判断 boolean 数据之间的逻辑关系,与、或、非。

&(与)、|(或)、!(非)、&&(短路与)、||(短路或)

注意:参与逻辑运算符的变量都是 boolean 类型的

变量1 & 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。
变量1 | 变量2:变量 1 和变量 2 中只要有一个为 true,结果为 true,否则为 false。
! 变量1:若变量 1 为 true,结果为 false,若变量 1 为 false,结果为 true。
变量1 && 变量2:只有当变量 1 和变量 2 都为 true,结果为 true,否则为 false。
变量1 || 变量2:变量 1 和变量 2 只要有一个为 true,结果为 true,否则为 false。

注意:&& 和 || 这两个相比 &和 | 效率更高一些

int num1 = 10;
int num2 = 11;
//先判断num1和num2是否相等,num1再++变成11
System.out.println(num1++==num2);
//num1++成12,再和num2比较
System.out.println(++num1==num2);
System.out.println((num1++==num2)&(++num1==num2));
System.out.println(num1);

int num1 = 10;
int num2 = 11;
//第一句已经是true了,不用走后一句了
System.out.println((++num1==num2)||(num1++==num2));
System.out.println(num1);

int num1 = 10;
int num2 = 11;
//第一句判断是true,走后一句,后一句也判断是true
System.out.println((++num1==num2)|(num1++==num2));
System.out.println(num1);

int num1 = 10;
int num2 = 11;
//第一句判断是false的,还要走后面的语句
System.out.println((num1++==num2)&(++num1==num2));
System.out.println(num1);

int num1 = 10;
int num2 = 11;
//第一句已经判断是false,就不用走后面的了
System.out.println((num1++==num2)&&(++num1==num2));
System.out.println(num1);
5、- 条件运算符

三元运算符、三目运算符、三元表达式
**根据不同的条件给同一个变量赋不同的值,变量 = 条件?值1:值2 **
如果条件成立(true)就把 ? 左边的值赋给变量,否则(false)就把右边的值赋给变量

public class Test001 {
    
    
	public static void main(String[] args) {
    
    
		int num = 1<2?1:0;
		System.out.println(num);
	}
}

因为1<2成立,故输出结果为1

public class Test001 {
    
    
	public static void main(String[] args) {
    
    
		int num = 1<2?1:0;
		System.out.println(num);
		int score = 90;
		System.out.println("本次答题的得分是:"+score);
		String str = score>80? "恭喜您获得优惠券一张":"很遗憾,您没有中奖";
	    System.out.println(str);
	}

}

输出结果为:
本次答题的得分是:90
恭喜您获得优惠券一张

6、- 位运算符

(1)十进制和二进制的转换:

十进制转二进制:目标数除以2,若能除尽,该位记做0,若除不尽,该位记做1,再对商继续除以2,以此类推,直到商为0,然后把每一位的结果反序组合就是对应的二进制。

10:1010
17:10001

(2) 二进制转十进制:从目标数的最后侧起,本位的数值乘以本位的权重,权重就是2的第几位的位数减一次方,将每一位的值进行相加,得到的结果就是对应的十进制。

1010:01(2的0次方)+12(2的1次方)+04(2的2次方)+18(2的3次方)=10

(3)位运算符

&(按位与)、|(按位或)、^(按位异或)、<<(左移)、>>(右移)

  • 变量1 & 变量2:先把变量 1 和变量 2 转为二进制,每一位的数字一一对应,进行比较判断,若都为 1,则该位记做 1,否则记做 0。

  • 变量1 | 变量2:先把变量 1 和变量 2 转为二进制,每一位的数字一一对应,进行比较判断,只要有一个为 1,则该位记做 1,否则记做 0。

  • 变量1 ^ 变量2:先把变量 1 和变量 2 转为二进制,每一位的数字一一对应,进行比较判断,相同记做 0,不同记做 1。

  • 变量1 << 变量2:变量1乘以2的变量2次方

    2 << 3 : 2 * 8 = 16

  • 变量1 >> 变量2:变量1除以2的变量2次方

    2 >> 3: 2/8 = 0

7、- 运算符优先级

!>算术运算符>关系运算符>逻辑运算符( && > || )

八、 流程控制

(1)- if else

用来判断某个条件是否成立,然后执行不同的逻辑运算。

基本语法:

if(判断条件){
    
    
  //条件成立的代码
}else{
    
    
  //条件不成立的代码
}

(2)- 多重 if

int height = 176;
if(height < 173) {
    
    
   System.out.println("M码");
}else if(height > 173 && height <= 178) {
    
    
	System.out.println("L码");
}else {
    
    
	System.out.println("XL码");
}

输出结果为:L码

  • if 后面必须跟条件
  • else 后面不能跟条件
  • else 后面可以根据{},也可以跟 if

(3)- switch-case

与 if 不同的是,switch-case 只能完成等值判断,而无法完成判断大小。

如果是判断两个值是否相等,可以使用 switch-case,如果比较两个值的大小关系,则不能使用 switch-case。

switch 支持 int、short、byte、char、枚举、String 类型,不支持 boolean 类型。

基本语法

switch(变量){
    
    
	case1:
		//业务代码
	breakcase2:
		//业务代码
	break;
	...
	default:
		//业务代码
	break;
}
case 判断变量是否等于某个值,default 表示所有的 case 都不成立的情况下所执行的代码。
  • 1 奖励 2000
  • 2 奖励 1000
  • 3 奖励 500
  • 否则没有奖励
        int placing = 3;
		/*if(placing ==1 ) {
			System.out.println("奖励2000元");
		}else if(placing == 2) {
			System.out.println("奖励1000元");
		}else if(placing == 3) {
			System.out.println("奖励500元");
		}else {
			System.out.println("没有奖励");
		}*/
		switch(placing) {
    
    
		case 1:
			System.out.println("奖励2000元");
			break;
		case 2:
			System.out.println("奖励1000元");
			break;
		case 3:
			System.out.println("奖励500元");
			break;
		default:
			System.out.println("没有奖励");
			break;
		}
		

参考链接1
参考链接2

猜你喜欢

转载自blog.csdn.net/qq_40220309/article/details/104653214
今日推荐