韩顺平java学习笔记(三)-- 运算符


用于数据的运算、赋值和比较等。
在这里插入图片描述

一、算术运算符

1、表格

使用细节:

(1)除(/)

System.out.println(10 / 4);//10是整数,4也是整数,结果会得到一个整数
System.out.println(10.0 / 4);//得到2.5
doulble d = 10/4;//java中10/2 = 2,2->2.0赋给double类型    

(2)取模(%)
%的本质: a%b = a-a/b*b
ps:符号与第一个数的符号一致,剩下取余

System.out.println(10 % 3);// 1
System.out.println(-10 % 3);// -1
System.out.println(10 % -3);// 1
System.out.println(-10 % -3);// -1

(3)自增(++)用法同自减
①如果作为独立语句使用,前++和后++都完全等价于i= i+1

int i = 10;
i++; //自增,等价于 i= i+1;=>i=11
++i; //自增,等价于 i= i+1;=>i=12
System.out.println("i="+i);// 12  

②作为表达式使用
前++:++i 先自增后赋值
后++:i++先赋值后自增

int j = 8;
int k = ++j;//等价于 j = j+1;k=j;k=9,j=9
int k = j++;//等价于 k = j;j=j+1;k=8,j=9  
System.out.println("k=" + k +"j="+ j);

int i = 1;
i = i++;
System.out.println(i);//1 ,先赋值

int i = 1;
i = ++i;
System.out.println(i);//2 ,先加加再赋值

二、关系运算符[比较运算符]

1.运算的结果是boolean型,要么true,要么false
2.经常被使用在if结构的条件中或循环结构的条件中
在这里插入图片描述

三、逻辑运算符

在这里插入图片描述
使用细节:
① &&与&使用区别
&&短路与:如果第一个条件为false,则第二个体条件不会判断,最终结果为false
&逻辑与:如果第一个条件为false,则第二个体条件还是会判断,效率低
② || 与 |使用区别
|| 短路或:如果第一个条件为true,则第二个体条件不会判断,最终结果为true
|逻辑与:如果第一个条件为true,则第二个体条件还是会判断,效率低

//取反操作
System.out.printl(!(60>20));//F
//异或操作,结果即先或再取反
boolean b = (10>1)^(3<5);//F

练习题

(1)
int x = 5;
int y = 5;
if (x++==6 & ++y==6){//逻辑与
			x = 11;		
} // x=5,x++;y=5,++y -> x++=5,x=6;++y=6,y=6->F&T->F
int x = 5;
int y = 5;
if (x++==6 && ++y==6){//短路与
			x = 11;		
} // x=5,x++;y=5,++y -> x++=5,x=6;++y=6,y=6->又因为短路与前面有F,后面不执行,所以输出x=6,y=5

(2)
boolean x = true;
boolean y = false;
short z = 46;
if ((z++ == 46)&&(y =true) ))  z++;
//z=46,z++-> z++=46,z=47 ->	T&&T->则z++=47,z=48
if((x=false)||(++z=49)) z++; 
//z=48,++z ->z=49,++z=49  f||T,->

四、赋值运算符

1.介绍

基本赋值运算符:=
复合赋值运算符:+ =;-=;*=;/=;%=;等

2.细节特点

(1)运算从右向左
(2)左边只能是变量 ,右边可以是变量、表达式、常量值。
(3)符号运算符等价于下面的效果a+=3 // a=a+3
(4)符号运算符会进行类型转换
byte b =3;
b+=2; //等价 b= (byte)(b+2);
b++;//b = (byte)b+1
如果是基本运算符即byte b;b=b+2 即int不能赋值给byte

五、三元运算符

1.基本语法

条件表达式?表达式1:表达式2;
运算规则:
(1)如果条件表达式为true,运算后的结果是表达式1;
(2)如果条件表达式为false,运算后的结果是表达式1;

int a=10;
int b=99;
int result=a>b? a++:b--System.out.println("result="+result);//result=b--=99
System.out.println("a="+result);//a=10,为假只执行表达式二,不执行表达式一

2.使用细节

(1)表达式1和表达式2的类型要为可以赋值给接受变量的类型(或可以自动转化)
(2)三元运算符可以转化为if–else语句
int res = a >b?a++:–b
if (a>b) res = a++;
else res = --b;

练习

求出三个数的最大值

int n1 = 55;
int n2 = 33;
int n3 = 123;
int max1 = n1 > n2 ? n1:n2;
int max2 = max1 > n3 ? max1:n3;
Systm.out.println("最大数="+max2);

六、运算符优先级

1.表格

在这里插入图片描述
优先级从上到下依次减退。
(1)() {}等
(2)单目运行 + + - -
(3)算术运算符
(4)位移运算符
(5)比较运算符
(6)逻辑运算符
(7)三元运算符
(8)赋值运算符

七、标识符的命名规则和规范

标识符即类名,变量名,方法等.

1.标识符命名规则

(1)由26个英文字母大小写,0-9,_或$组成。
(2)数字不可以开头。
(3)不可以使用关键字和保留字,但是可以包含关键字和保留字。
(4)Java中严格区分大小写,长度无限制。
(5)标识符不能包含空格。

2.标识符命名规范

(1)包名:多单词组成时所有字母都小写:aaa.bbb.ccc
(2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰]
(3)变量名、方法名:多单词组成是,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰,简称 驼峰法]
例:命名学生的名字String stuName = “jack”;
(4) 常量名:所有字母都大写。多单词时,每个单词都用下划线链接:XXX_YYY_ZZZ

八、键盘输入语句

步骤

1.导入该类所在的包,java.until.*(*在此为Scanner).
2.创建该类对象(声明变量)
3.调用里面的功能。

import java.until.Scanner;
public class Input {
	public static void main(String[] args){
	//创建Scanner对象,new创建一个对象,myScanner就是Scanner类的对象
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入名字:");
		String name = myScanner.next();//接收用户输入字符串
		System.out.println("请输入年龄:");
		int age = myScanner.nextIN();
		System.out.println("请输入薪水:");
		double al = myScanner.nextDouble();
		System.out.println("人的信息如下:");
		System.out.println("名字="+name+"年龄="+age+"薪水="+sal);
}                                                                                                                                                                                                                                                                                                                                             
}

九、进制

对于整数,有四种表达方法:
1.二进制:0,1,满2进1,以0b或0B开头。
2.十进制:0-9,满10进1.
3.八进制:0-7,满8进1,以数字0开头表示。
4.十六进制:0-9及A(10)-F(15),满16进1,以0x或0X开头表示。此处A-F不区分大小写。
在这里插入图片描述
一个字节有8位,因此补两个0
在这里插入图片描述
二进制转换成八进制:
从低位开始,将二进制每三位一组,转成对应的八进制数
二进制转十六进制:
从低位开始,将二进制每四位一组,转成对应的八进制数
八进制转2进制:
从低位开始,将每一位,转成对应的一个3位的二进制数即可
十六进制转2进制
从低位开始,将每一位,转成对应的一个4位的二进制数即可

九、进制

源码、反码、补码

  1. 二进制的最高位十符号位:0表示正数,1表示负数。
  2. 正数的原码、反码,补码都一样。
  3. 负数的反码 = 它的原码符号位不变,其它位取反。
  4. 负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1。
  5. 0的反码,补码都是0。
  6. java没有无符号数,换言之,java中的数都是有符号的。
  7. 在计算机运算的时候,都是以补码的方式来运算的。
  8. 当我们看运算结果时候,要看他的原码。
2&3
1.先得到2的补码=>2的原码00000000 00000000 00000000 00000010 (因为2int型,int4个字节)
 2的补码 00000000 00000000 00000000 00000010 (正数的原码、反码,补码都一样。)
2.3的补码=>3的原码 00000000 00000000 00000000 00000011
3的补码 00000000 00000000 00000000 00000011
3.按位&
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000010

~-2
1.先得到-2的补码=>-2的原码10000000 00000000 00000000 00000010 (因为2int型,int4个字节)
 -2的反码 11111111 11111111 11111111 11111101 
2.-2的补码为11111111 11111111 11111111 11111110
所以~-2的补码为 00000000 00000000 00000000 00000001
~-2的源码为 00000000 00000000 00000000 00000001 (运算后为正数,所以源码=补码)

~2
1.2的源码00000000 00000000 00000000 00000010 
2的补码00000000 00000000 00000000 00000010 
~2的补码 11111111 11111111 11111111 11111101 
~2的反码 11111111 11111111 11111111 11111100
~2的源码 10000000 0000000 11111111 11111101 

十、位运算符

※ 运算是按照补码方式运算的
java当中有7个位运算(&、|、^、~、>>、<<和>>>)
按位与&:两位全为1,结果为1,否则为0(有0则为0)
按位或|:两位有一个是1,结果为1,否则为0(有1则为1)
按位异或^:两位一个是1,一个是0,结果为1,否则为0(不一样的为1,一样的为0)
按位取反~:0变1,1变0
1.算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
2.算术左移<<:符号位不变,低位补0
3.>>>逻辑右移也叫无符号右移,运算规则是:低位溢出即扔去,高位补0

int a = 1>>2;
00000001=>000000000 本质1/2/2=0
int c = 1<<2;
00000001=>00000100 本质1*2*2=4
4<<3 相当于4*2*2*2=32
15>>2 相当于15/2/2=3

本章作业

1.计算下列表达式的结果
10/3= 3;  10/5 =2; 10%2=0;-10.5%3=-1.5
2.说出如下代码的结果
int i = 66;
System.out.println(++i+i);134
3.在java中,以下赋值语句正确的是
A)int num1=(int)"18";错,应该是Integer.parseInt(“18”)
B)int num2 = 18.0;错
c)double num3 = 3d;D)double num4=8;对
int i =48;char ch = i+1;F)byte b=19;short s = b+2;4.写出String转换double类型的语句,以及将char类型转化成String的语句
string ->double 
String str = "18.8";
double d1=Double.parseDouble(str);

cha->string
char c1 = '韩'String str2 = c1 + "";

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
B站上的顺平老师的《Linux学习笔记》系列课程非常值得推荐。通过这个课程,我学到了很多关于Linux操作系统的知识和技能。 首先,老师在课程中详细介绍了Linux的基本概念和特点。我清楚地了解到Linux是一个开源的操作系统,具有稳定性、安全性和可定制性强的特点。这让我对Linux有了更深入的理解,也更有信心去学习和使用它。 其次,老师从基础开始,逐步讲解了Linux的安装和配置。他用简单明了的语言和实际操作的示范,帮助我了解了如何在虚拟机上安装Linux系统,并设置网络、用户账户、文件系统等。这为我后续的学习和实践打下了坚实的基础。 此外,老师还讲解了Linux的常用命令和工具。他详细介绍了常用的文件和目录操作命令,比如cd、ls、mkdir、cp等。同时,他还讲解了grep、sed、awk等强大的文本处理工具的使用方法。这些内容帮助我更加高效地进行文件管理和数据处理。 最后,老师还介绍了Linux的网络管理和安全防护。他讲解了如何配置网络连接、使用ssh远程登录以及设置防火墙等内容。这些知识对我了解网络和保护系统安全非常有帮助。 总的来说,顺平老师的《Linux学习笔记》课程非常实用,对于初学者来说是入门学习Linux的好选择。他通过深入浅出的讲解和丰富的实操示范,让我可以轻松地学习到Linux的基本知识和操作技巧。我相信通过学习这个课程,我会在Linux领域有更进一步的发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值