Java笔记_运算符

目录

概述

标识符

运算符优先级

算数运算符

关系运算符

逻辑运算符

赋值运算符

三元运算符

位运算符

网址


概述

        运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。

        运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。(百度百科)

标识符

标识符概念

1)Java对各种变量、方法和类等命名时使用的字符序列称为标识符

2)凡是自己可以起名字的地方都叫标识符    int num1 = 90;

标识符的命名规则(必须遵守)


1)由26个英文字母大小写,0-9,_或$组成

2)数字不可以开头。int 3ab = 1;//错误
3)不可以使用关键字和保留字,但能包含关键字和保留字。
4)Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;

5)标识符不能包含空格。int a b = 90;//error

标识符的规范

1)包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如com.hsp.crm

2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰)。

比如:TankShotGame

3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个

单词首字母大写:xxxYyyZzz(小驼峰)。

比如:tankShotGame

4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY zzz

比如:定义一个所得税率 TAX RATE

5)后面我们学习到类,包,接口,等时,我们的命名规范要这样遵守

键盘输入

import java.util.Scanner;//导入包

Scanner myScananer = new Scanner(System.in);
System.out.println("请输入姓名");
String name  = myScananer.next();//接受用户输入
System.out.println("请输入性别");
char sex  = myScananer.next();//接受用户输入
System.out.println("请输入年龄");
int age  = myScananer.next();//接受用户输入

运算符优先级

1)()、{}等

2)单目运行++   --   ~

3)算术运算符*   /   %   +   -

4)位移运算符 <<   >>   >>>

5)比较运算符<   >   <=   >=  ==   !=

6)逻辑运算符 &  |   ^  &&  ||

7)三元运算符? :

8)赋值运算符 =   *=   /=   %=   +=   -+   <<=  >>=   >>>=   &=   ^=   |=

算数运算符

运用

public class ArithmeticOperator {
public static void main(String[] args) {
//除法,注意精度丢失
System.out.println(10 / 4);            //2
System.out.println(10.0 / 4);          //2.5
double d1 = 10 / 4;                     // 10 / 4 = 2,定义d1为2.0 
double d2 = 10.0 / 4;
System.out.println(d1);                //2.0
System.out.println(d2);                //2.5

//取模
//运算逻辑 a % b = a - a / b * b;
System.out.println(10 % 3);            //1
System.out.println(-10 % 3);           //-1
System.out.println(10 % -3);           //1
System.out.println(-10 % -3);          //-1

//自增 ++1 与 i++ ;
//独立使用两者无疑
int i = 1;
i++;
System.out.println(i);//2
++i;
System.out.println(i);//3
//作为表达式使用两者相同
int j = 1;
// j = j + 1; k = j;
int k = ++j; 
// l = j; j = j + 1;
int l = j++; 
System.out.println(k);              //2
System.out.println(l);              //2
}
}

除法

整数进行除法运算会自动丢弃小数位,浮点数除法则会保留小数位,注意,定义浮点数一定要保留小数位,否则将会按整数运算

取模

Java取模运算逻辑,a % b = a - a / b *b;

++

独立使用时

++i 与i++用法相等 i = i + 2;

作为表达式使用

K = ++i; i = i+1,k= i(运算后的i);

J = i ++; J = i ,i = i +1

延伸

public class One {
public static void main(String[] args) {

// int i = 1;  
// i = i++;     //使用该语句时执行逻辑(1) temp = i;(2)i = i + 1; (3) i = temp;
// System.out.println(i);          //1

int i = 1;       //使用该语句时执行逻辑(1) i = i+1; (2)temp = i ;(3)i = temp;
i = ++i;
System.out.println(i);          //2
}
}

练习一

假如还有59天放假,问:合多少个星期零多少天?

思路

1.需求假如还有59天放假,合多少个星期零多少天

2.思路分析 使用int变量定义day,一个星期七天,多少个星期day / 7;零多少天 days % 7;输出

3.代码实现

public class days {
public static void main(String[] args) {
int day = 59;
int week = day / 7;
int surplusDay = day % 7;
System.out.println(day + "天合" + week + "个星期零" +surplusDay+"天" );
// 输出结果
// 59天合8个星期零3天
}   
}

练习二

华氏度转换

定义个变量保存华氏度,华氏度传摄氏度公式5/9(华氏度-100度),注意

public class FahrenheitParse {
public static void main(String[] args) {
double Fahrenheit = 259.4;
double centigrade = 5.0 / 9 * (Fahrenheit-100);
System.out.println("华氏度" + Fahrenheit+"等于摄氏度"+centigrade);
}
//debug
//华氏度259.4等于摄氏度88.55555555555554
//精度控制以后再学
}

关系运算符

关系运算符(比较运算符)

==

!=

<

>

<=

>=

instanceof 检查是否是类的对象 "hso" instanceof String 结果为true

1)关系运算符的结果都是boolean型,也就是要么是true,要么是false

2)关系表达式经常用在if结构的条件中或循环结构的条件中

逻辑运算符

逻辑与 & ,两者同为true则为true,否则为false

短语与 &&,两者同为true则为true,否则为false,单路与只运算第一个表达式,正确则判断正

区别逻辑与与短路与

&&第一个为false则第二个不会判断,输出结果为false,逻辑与&两个都要判断,效率

逻辑或 | ,两者有一个true则为true,否则为false

短路或 || ,两者有一个true则为true,否则为false

区别

短路或,第一个条件为true,则第二个条件不判断,最终结果为true,,逻辑或则两个都要判断

!a,取反,a为true,!a为false

a^b,逻辑异或,ab相同为true,ab不同为false,

int x = 5;int y=5;
if(x++==6 &++y==6){//逻辑与
x = 11;
}
System.out.println("x="+x+",y="+y)
//;6,6
int x = 5,y = 5;
if(x++==6 && ++y==6){
x = 11;
}
System.out.println("x="+x+",y="+y);
//6,5
int x = 5,y = 5;
if(x++==5 |++y==5){
x =11;
}
System.out.println("x="+x+",y="+y);
//11,6
int x = 5,y = 5;
if(x++==5 |l++y==5){
x =11;
}
System.out.println("x="+x+",y="+y);
//11,5

赋值运算符

赋值过程中有强制类型转换

byte b = 2;
//errore,b = b + 2;2为int类型等号右边会按高精度int进行运算结果为int类型,将高精度赋给低精度会报错
b += 2;//等价于 b = (byte) (b + 2);会进行强制转换
b++;//等价于(byte)(b = b + 1);

赋值运算符特点

1)运算顺序从右往左int num = a +b +C;

2)赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值int num = 20; int num2= 78* 34 - 10; int num3 = a;

3)复合赋值运算符等价于下面的效果

比如:a+=3;等价于a=a+3;4)复合赋值运算符会进行类型转换。byte b = 2; b+=3; b++;

三元运算符

基本语法 调价表达式 ?表达式1:表达式2

记忆,一真大师,表达式为真返回1,false返回2

练习,三个数选择最大

int n1 = 1;
int n2 = 2;
int n3 = 3;max2
//思路,现将n1余n2的比较结果放入max1,再将max1与max2的比较结果放入max2
int max1 = n1>n2?n1:n2;
int max2 = max1>n3?max1:n3;
System.out.println("最大数是"+max2);
//一条语句
int max = (n1>n2?n1:n2)>n3?(n1>n2?n1:n2):n3;//最好使用上面那个,逻辑清晰
System.out.println("最大数是"+max);

位运算符

进制转换

原码反码补码(重点)

1)二进制最高制位是符号位:0表示正数1表示负数(0正1负)

2)正数的原码,反码,补码都一样(三码合一)

3)负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)

4)负数的补码=它的反码+1,负数的反码=负数的补码-1

5)的反码,补码都是0

6) java没有无符号数,换言之,java中的数都是有符号的7.在计算机运算的时候,都是以补码的方式来运算的.8.当我们看运算结果的时候,要看他的原码0

位运算符1

位运算符

java中有7个位运算(&、|、^、~、>>、<<和>>>)

分别是按位与&、按位或|、按位异或^,按位取反~,它

按位与&,两位全为1,结果为1,否则为0

按位或 | 两位有一个为1,结果为1,否则为0

按位异或^ 两位一个为0,一个为1,结果为1,否则为0

按位取反~:0->1,1->0

比如:2&3=? ~-2 =? ~2=? 2|3=? 2^3=?

计算 ~-2;
1)先得到-2的原码        10000000 00000000 00000000 00000010
2)得到-2的反码          11111111 11111111 11111111 11111101
3)得到-2的补码 	        11111111 11111111 11111111 11111110
4)~-2进行操作	        00000000 00000000 00000000 00000001
    
~-2 = 1;
计算~2
1)先得到2的补码       00000000 00000000 00000000 00000010
2)对~2进行操作        11111111 11111111 11111111 11111101 运算后的补码
3)运算后的反码        11111111 11111111 11111111 11111100
4)运算后的原码        10000000 00000000 00000000 00000011//最高位符号位不变
运算结果为	-3;

位运运算2


位运算符>>、<<和>>>

运算规则:

1)算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位

2)算术左移<<;符号位不变,低位补0
3) >>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0

4)特别说明:没有<<<符号

int a=1>>2; //1 => 00000001 => 00000000         本质1/2/2 =0

int c=1<<2; //1 => 00000001 => 00000100         本质1*2*2=4

网址

B站韩顺平老师【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值