Java语法--运算(个人笔记五)

Java语法--运算


Java中的运算一般是通过运算符来实现,以下是本次个人笔记总结的六种运算符使用。

一、算术运算符 ( + - * / % ++ --  //加、减、乘、除、除取余、自加一、自减一)

加减乘相对来讲都较为简单,此处不做记录

1、/ 的使用

 例:15000/10000*10000 => 10000//java中两个整数相除,结果是不保留小数的

 例:double a=15000f/10000f =>1.5

2、% 求两个数相除后的余数

 例:5 % 3 =>2;

 例:3 % 5 =>3;

 例:-2 % 8 =>-2;

3、++  -- 在原来数值的基础上,自增或自减一

 例:int a=10;a++; =>System.out.println(a); =>11//也可以这样写 ++a,同样能让a自增

 例:++在前和在后有什么区别?

//++在前的例子

int a=10; int b=++a; //会先让a自增,然后再进行b=a这个操作

=>System.out.println(a); //11 System.out.println(b); //11

//++在后的例子

int a=10; int b=a++; //++在后,会先执行int b=a,然后再a++,

=>System.out.println(a); //11 System.out.println(b); //10

//--和++原理相同

4、字符串相加

 例:String str="1+2="+1+2; =>System.out.println(str); //1+2=12

说明:在进行运算的时候,要求参与运算的双方类型相同,如果不相同,把低的往高的一方转

 例:几个常用的转义字符

\t 相当于tab键 => //System.out.println("我和后面的语句之间有\t距离")

\b 相当于backspace键 (删除键) => //System.out.println("少一个字\b符"); //长度是6

\n 换行 => //System.out.println("同志们\n辛苦了");

二、赋值运算符

//例一byte a=5;=>a+=5;  //OKa=a+5//错//原因:a+=5和a=a+5有什么区别//a=a+5; 编译报错,两次运算,先做加法,再进行赋值// a+=5; 编译可以,一次运算,把5直接拿到a里

//例一byte a=10;int b=a;   //没有任何问题

//例二 byte a=10;a=a+5;   编译报错,因为 a + 5 这个操作 a 会提升为int型,和 5相加,结果是int,传给byte型的a 出错

//例三 short a=10;short b=a+5; 和上例一样,报错

//例四 final byte a=10;  用final修饰以后,a就变成了常量,常量的值在编译期就能确定a=a+5;  ok,可以通过

//例五 byte a=5;byte b=8;byte c=a+b;

--实验发现,上例对于byte,short都会报错,但int型不报错因为byte型或short型或char型相加的结果,容易超界,所以java中对它们相加的结果,默认为int型

//例六 char a=90;char b=10;//char c=a+b; Error//int c=a+b;  OK

//例七 关于 += 操作符byte a=90;a=a+10; 这个操作编译失败,这是两次运算byte a=90;a+=10;  ok 一次运算

三、逻辑运算符(一定为Boolean)

&  与  两边都成立的时候值才为真,哪怕有一个为假,结果也为假

|  或  两边只要有一个成立,结果为真

^  异或  两边相同,结果为假,两边不同,结果为真

附 一个数值和另一个数值,进行两次异或操作,将得到原来的值

int a=90;a^=58;  //System.out.println(a); =>96System.out.println(a^58); => 90

!  非 

&&  短路与  假如有多个条件,只要前面的一个不成立,后面的也不执行判断了

||  短路或一般情况下代码中都会用&&、||效率会高

四、关系运算符

>  <  >=  <=   !=   instance of//关系运算符的结果全是boolean型

五、位运算符

&  按位与

|  按位或

~  按位取反

^  按位抑或

<<  //逻辑左移 左移一次,相当于乘2如何快速的计算 2*8   2<<3

>>  //逻辑右移  ,右移一次,相当于除2    30 >>12 =0 ,原来的符号位,原来高位是什么,就补什么

>>> //无符号右移, 不管原来的符号位是什么,都补 0

六、条件运算符 (三元表达式)

int 工作天数=50;

//算工资,如果工作天数>30天,给5000元,如果小于30天,给1000元

int 工资=0;

if(工作天数>30){

工资=5000;

}else{

工资=1000;

}

用三元表达式: int  工资=工作天数>30 ? 5000:1000;

String msg;

msg= 工作天数>30 ? "好样的":"八格";  

说明:三元表达式的用法要求是最终要返回一个值类似上面的5000是一个具体值,他不能完全代替if else

    七 流程语句

顺序结构

分支结构

循环结构

条件语句

//例一

int age=10;

if(age<20)

System.out.println("小孩"); //if 管到离它最近的一句

System.out.println("我和上面的if没有什么关系");

//例二

int age=40;

if(age<20){

System.out.println("小孩");

System.out.println("我和上面的是一伙");

}

//例三

int age=10;

if(age<20){

System.out.println("小孩");

}

//System.out.println("我是打酱油的")  注意,if 和else中间不能有其他代码 比如这句

else{

System.out.println("大人");

}

//例四

class T{

public static void main(String[] args){

int month=30;

if(month==1){

System.out.println("一月");

}else if(month==2){

System.out.println("二月");

}else if(month==3){

System.out.println("三月");

}else{

System.out.println("不知道几月");

}

}

}

// 例子 ,输入一个月份,判断它是第几季度

import java.util.Scanner;  //导包

public class Demo1{

public static void main(String[] args){

System.out.println("请输入一个月份");

Scanner scan=new Scanner(System.in);  

int month = scan.nextInt(); //从键盘接收一个int型数据

scan.close(); //释放资源

if(month>=1&&month<=3){

System.out.println("一季度");

}else if(month>=4&&month<=6){

System.out.println("二季度");

}else if(month>=7&&month<=9){

System.out.println("三季度");

}else if(month>=10&&month<=12){

System.out.println("四季度");

}else{

System.out.println("输入的月分不对");

}

}

}

八 类型强转

byte a=90;

int b=a;  //行,小盒子里东西往大盒子里装,没问题,自动类型转换

int a=10;

byte b=a; //不行,类型不对,如果非要装进去,要强制进行类型转换

int a=10;

byte b= (byte)a;  //强制类型转换,当byte型可以装下的时候,不会出错可以

System.out.println(b);  10

强转的时候,要注意,不要超出低类型的范围

int x=128;  //byte 最大能装下127

byte y=(byte)x;

System.out.println(y); //-128

byte short int char ,jdk1.7  及以后,可以用String顺序结构


 

猜你喜欢

转载自blog.csdn.net/weixin_41205479/article/details/79244685