Java基础学习笔记(二)

本文详细介绍了Java中的运算符,包括算术、赋值、比较、逻辑、位及三元运算符,并讲解了Java的基本语法,如键盘录入、流程控制语句,特别是深入解析了if语句的使用和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java基础学习笔记与总结(二)

Java中的运算符

(一)算术运算符

算术运算符主要有:+,-,*,/,%,++,–

+: 在java中,+号除了可以当做运算符进行加法计算外,还可以当做正号和进行字符串连接的操作符。当进行运算的时候要注意,如果两个操作数中有一个是字符串类型的,+号就会被当做连接符使用,出现结果异常的问题;
/和%的区别: 数据做除法操作的时候,/取得是商,%取得是余数
++和–的用法: 他们的作用是自增或者自减;
单独使用时,它们放在前后的结果是一样的;而当参与操作时,放在前面就是先自增或自减,放在后面就是后自增或自减。
例如:

	int a = 10;
	int b = ++a;			//这时b的值就是11,因为++放在了前面就对a先进行了自增,然后再赋值
	
	int c = 10;
	int d = c++;			//这时的d依旧是10,因为是先赋值,后++
(二)赋值运算符

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

= 叫做赋值运算符,也是最基本的赋值运算符。
例如:

int a = 100;			//这里就是将100的值赋给int整形变量a

剩下的几种运算符属于扩展运算符,它们中包含了强制转换。

	byte a = 12;
	a = a + 1;

	byte b = 12;
	b += 1;

上面的代码中,在赋值操作的时候,a变量没有进行强制转换,因为byte,short,char做运算时会默认提升数据类型为int,所以没有强制转换可能造成精度丢失,编译器就会报错。
而下面的b变量进行了扩展赋值运算符,由于扩展运算符中隐含了强制转换,就不会出问题;

(三)比较运算符

比较运算符有:==,!=,>,>=,<,<=
无论运算符两端简单还是复杂最终结果是boolean类型。而在比较时也要注意不要把 == 写成 =

(四)逻辑运算符

逻辑运算符有:&,|,^,!,&&,||
逻辑运算符用于连接boolean类型的式子;
&: 有false则false
|: 有true则true
^: 相同则false,不同则true。
!: 非true则false,非false则true
&&: 结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||: 结果和|是一样的,只不过有短路效果。左边是true,右边不执行。

(五)位运算符

^ 如果相对应位值相同,则结果为0,否则为1。
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
上面的位运算符运算的时候都是对数据的二进制下进行运算的,所以用二进制数据运算能更好理解上面的位运算符的用处。

^的特殊用法:一个数据针对另一个数据位异或两次,该数不变

(六)三元运算符

格式:比较表达式 ? 表达式1 : 表达式2
执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
例如:

	//求两个数最大值例子
	int a = 22;		//定义比较变量a
	int b = 25;		//定义比较变量b
	int max = a > b ? a : b;		//比较a是否大于b,如果a大于b,就将冒号前面的a变量的值赋给max,否则就将冒号后的b变量值赋给max;

Java的基本语法

(七)键盘录入

在实际开发中,很多数据都是可变的,为了方便我们我们的程序开发,提高灵活性,Java就提供了键盘录入功能。
使用范例:

//首先要导入键盘录入对象的包,是jdk里默认提供的,如果有eclipse类的开发工具可以在写出类后直接快捷键导包
import java.util.Scanner		//通过import语句导入util包下的Scanner类

public class ScannerDemo{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);	//创建键盘录入对象,其中System.in本质是标准输入流的一个对象,在io流里会详细解释
		int x = sc.nextInt();		//通过Scanner对象的nextInt方法获取控制台输入的数据,这里这个方法只能接收int类型数据
		System.out.println(x);		//从控制台输出从键盘录入的数据
	}
}
(八)流程控制语句

流程语句分为3种结构。

  • 顺序结构:从上往下,依次执行。
  • 选择结构:按照不同的选择,执行不同的代码/
  • 循环结构:做一些重复的代码
(九)if语句

if语句是一种判断语句,有三种格式。

  • 格式1:
	if(比较表达式){
		语句体;
	}
	/*
		执行流程是:判断比较表达式中的值,是true还是false,如果是true就执行大括号内的语句体,执行完语句体后会继续向下执行
		如果是false,就直接向下执行,不会执行大括号里面的语句体
	*/
  • 格式2:
	if(比较表达式){
		语句体1;
	}else{
		语句体2;
	}
	语句3;
	/*
		执行流程是:判断比较表达式中的值,是true还是false,如果是true就执行语句体1,执行完语句体1后会向下执行语句3;
		如果是false,就向下执行else里面的语句体2,执行完语句体2后继续向下执行语句3;
	*/
  • 格式3:
	if(比较表达式1){
		语句体1;
	}else if(比较表达式2){
		语句体2;
	}
	...
	else{
		语句体n+1;
	}
	语句n+2;
	/*
		执行流程是:判断比较表达式中的值,是true还是false,如果是true就执行语句体1,执行完语句体1后会向下执行语句n+2;
		如果是false,就继续判断比较表达式2的值是true或false,是true就执行比较表达式2后的语句体2,是false就继续向下在做比较表达式n的判断,直到所有else if里面的比较表达式值都是false,就执行else后的语句体
		
	*/

注意事项:
A:比较表达式无论简单还是复杂,结果是boolean类型;
B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
D:else后面如果没有if,是不会出现比较表达式的。
E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。

三元运算符和if语句第二种格式的关系
所有的三元运算符能够实现的,if语句的第二种格式都能实现。
反之不成立。

再来些if语句的代码练习:

		//比较两个数是否相等,代码可直接复制到类中的main方法中执行,为了方便我就不再写了
		int a = 20;
		int b = 21;
		if(a == b){
			System.out.println("两个数相等");	//如果a和b相等,就输出这句话
		}else{
			System.out.println("两个数不相等");		//显然结果是这个
		}
		
		//获取两个数中的最大值
		int max = 0;		//定义最大值存储变量
		int a = 30;
		int b = 40;
		if(a>b){
			max = a;
		}else{
			max = b;		
		}
		System.out.println("最大值是:"+max);		//显然结果是40,大家可以在控制台看结果
	
		//获取三个数中的最大值(if语句的嵌套)
		int max = 0;		//定义最大值存储变量
		int a = 30;
		int b = 40;
		int c = 50;
		if(a>b){
			if(a>c){
				max = a;		//如果a>b且又>c说明a是3个数中最大的,则把a赋值给max
			}esle{
				max = c;		//否则的话a>b但是比c小说明c是最大的
			}
		}else {
			if(b>c){
				max = b;		//由于前面的a>b不成立所以b>a,这里在比较b和c谁大,如果b>c显然b是最大值
			}else{
				max = b;
			}		
		}
		System.out.println("最大值是:"+max);
	
		//上面的三个数最大值练习用三目运算符改
		int a = 30;
		int b = 40;
		int c = 50;
		int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;		//编译运行后控制台输出的是50,效果和上面的if语句效果一样,a > b ? a : b这个是求出a和b中的最大值,然后再和c比较出最大值。可以看到,用三目运算符比上面的if嵌套要简洁的多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值