Java_基础语法2

内容概述

  • 算数运算符
  • 赋值运算符
  • +运算符的特点
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 三目运算符
  • 接收控制台输入

算数运算符

1.+
2.-
3.*
4./
10 / 3 : 3
10 / 0 : 运行时异常;
10.0 / 0 :Infinity(无穷)不是异常
5.%(取余)
10 % 3 : 1
10 % 0 : 运行时异常
10.0 % 0 : NaN(Not A Number)不是异常
-10 % -3 :-1
10 % 3 :1
-10 % 3:-1
10 % -3:1
6.++:对变量自增1
7.--:对变量自减1
8.注意:++和--
1.++和--是对变量本身进行更改;自增1或自减1
2.它可以放在变量的前面,也可以放在变量的后面;
3.它在左右两边,必须是"变量",不能是"常量值"或"表达式";
4.如果表达式中,只做++和--,那么放在前或放在后,都一样;
但是,如果表达式还做其它事情,那么前++/--和后++/--效果就不一样了;
int num1 = 10;
int num2 = ++num1;//num2 = 11
int num2 = num1++;//num2 = 10;

赋值运算符

+=,-=,*=,/=,%=
上述运算符都自动带"强制转换"功能:
	byte b1 = 10;
	b1 = b1 + 20;//编译错误;b1 + 20结果为int,所以要用int接收
	b1 += 20;//OK的;b1 = (byte)(b1 + 20);
赋值运算符"="它可以返回变量;
class Demo2
{
	public static void main(String[] args) 
	{
		int a = 10;
		System.out.println(a = 20);//a = 20;System.out.println(a);
	}
}

+运算符的特点

1.+运算符,如果左右两边是"数值"类型,那么就做加法运算:
2.如果左右两边,有一边是"字符串"类型,那么结果就做:字符串连接:
3."字符类型(char)"跟"整型"是兼容的类型;一个char类型,可以和一个数值类型做+,-,*,/等运算;在做运算时,char类型使用的底层的Unicode编码的值;
char c1 = 'a';
System.out.println(c1 + 1);//98

关系运算符

有些时候,我们需要让计算机为我们进行一些判断:
1.==:判断是否相等
2.!=:判断是否不等;
3.<:左操作数是否小于右操作数;
4.>:左操作数是否大于右操作数;
5.<=:左操作数是否小于或者等于右操作数;
6.>=:左操作数是否大于或者等于右操作数;

逻辑运算符

1.&&(并且):true && true 结果为:true,否则有一个为false,结果为false;(两边都为true,结果为true)
2.||(或者):true || false结果为:true;表达式中,(有一个为true,结果为true);
3.!(不是):非;!true为false,!false为true;
位运算符:
1.&(并且):结果跟&&一样
2.|(或者):结果跟||一样
3.^(异或):两位相同结果为false,不同,结果为true;
逻辑&&/||和按位&/|的区别:
&&/|| : 具有"短路"行为。一旦确定整个表达式的结果,那么不再计算剩余表达式;
int age = 20;
System.out.println(age >= 22 && ++age <= 25);//由于&&、||具有短路行为,所以++age没有被执行;
System.out.println(age >= 22 & ++age <= 25);//&、|不具有短路行为,所以会执行所有表达式;

位运算符1:&,|,^,~

1."位运算符"是对"整数"的"二进制"直接操作的运算符;我们现在使用的已经不多了,因为现在的计算机硬件已经非常快;
2.位运算符:
1).&(与):两位都为1,结果为1,否则结果为0;
System.out.println(3 & 2);
3的二进制:0000 0011
2的二进制:0000 0010
	 &
	--------------
	  0000 0010
2).|(或):有一位为1,结果为1,其它都为0;
System.out.println(3 | 2);
3的二进制:0000 0011
2的二进制:0000 0010
	|
	---------------
	  0000 0011
3).^(异或):两位相同,结果为0,不同结果为1;
System.out.println(3 | 2);
3的二进制:0000 0011
2的二进制:0000 0010
	^
	--------------
	  0000 0001
4).~(取反):如果为1,结果取0,如果为0,结果取1;
System.out.println(~1);
1的二进制:0000 0001
	~
	------------
	 1111 1110(补码)
	-1
	--------------
	 1111 1101
	取反
	---------------
	 1000 0010  (-2)
注意:所有的位运算符对原值都不产生影响,不会改变原值,会产生一个新值;
3.习题:怎么样用一种高效的方式,交换两个变量的值:
					int a = 10;
					int b = 20;
					//第一种方式,使用第三方变量:
					int c = a;
					a = b;
					b = c;
					//第二种方式,加法方式
					a=a+b;
					b=a-b;
					a=a-b;
					//使用三次异或操作;
					a = a ^ b;
					b = a ^ b;
					a = a ^ b;
					//一句话搞定
					a=(a+b)-(b=a);

位运算符2:<<,>>,>>>

1.<< : 将整数的二进制,左移若干位;右侧补0;
左移一位,相当于原数 * 2
实际移动的位数 = 移动的位数 % 32 
注意:一定要在"数值位"上移动,否则结果不可预知;
2.>> : 带符号的右移。将二进制数向右移动若干位,左侧补原符号位的值(原符号位为0,左侧补0;原符号位为1,左侧补1)
右移一位,相当于原数 / 2
正数:无论右移多少位,结果仍然为正数;
负数:无论右移多少位,结果都是负数;

3.>>>: 无符号右移。右移若干位,左侧补0;
负数,只要右移一位,结果为正;
4.习题:如何使用高效的方式计算:2 * 8;
			System.out.println(2 << 3);//左移三次
			System.out.println(8 << 1);//左移一次;
注意:左移,或右移,都不会改变原值,而是产生一个新值;

三目运算符

关系表达式  ?  表达式1 : 表达式2;
说明:
1.关系表达式:一定要是一个产生true或false结果的一个表达式,它可以关系运算符以及逻辑运算符;
2.如果"关系表达式"返回true,执行"表达式1";如果"关系表达式"返回false,执行"表达式2";
注意:
1.三目运算符中的"表达式1"和"表达式2"一定要返回一个变量,或者值。不能是其它语句:

接收控制台输入

	步骤:
	1.导入包;在class的定义之前,写如下语句:
			import java.util.Scanner;
	2.实例化对象:在main()方法中,写如下语句:
			Scanner sc = new Scanner(System.in);
	3.接收用户输入:
			1).接收整数:
				int num = sc.nextInt();
			2).接收字符串:
				String str = sc.next();
			3).接收一个浮点值:
				double val = sc.nextDouble();	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值