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顺序结构