目录
1 运算符之一:算数运算符
/*
运算符之一:算数运算符
+ - * 和/ % 前++ -- 后++ --
*/
class AriTest {
public static void main(String[] args){
int num1 = 12;
int num2 = 5 ;
double result1 = num1 / num2 ; //2.0
double result2 = (num1+0.0) /num2 ; //2.4 (num1+0.0)转成double
double result3 = num1 / (num2+0.0); //2.4 (num2+0.0)转成double
double result4 = (double) num1/num2; //2.4 把num1转成double
double result5= (double) (num1/num2);// 2.0 已经算完num1/num2已经是2了,所以double还是2
System.out.println(result1);
/*
取余运算:
结果的符号与被模数/被除数符号相同
经常使用%来判断能否被除尽的情况
*/
int n1=12;
int m1=5;
System.out.println(n1%m1); //2
int n2= -12;
int m2= 5;
System.out.println(n2%m2); //-2
}
}
/*
前++ : 先自增1,再运算
后++: 先运算,再自增1
*/
int a1= 10;
int b1=++a1; //a1 =11 b1=11
int a2 = 10;
int b2 ==a2++; //a2=11 b2=10
int a3=10;
++a3;
int b3 = a3; // a3= 11 b3=11
int a4=10;
++a4;
int b4 =++a4; //a4=12 //b4=12
//注意点:
short s1=10;
s1++; //自增1不会改变本身变量的数据类型
byte bb1=127;
bb1++; // bb1=-128
//前--:先自减1,后运算;
//后--,先运算赋值,再自减1;
//与前++ 后++一致
int a4=10;
int b4 =--a4; // a4=9 b4=9
/*
练习:
随意3位数,给出百位数,十位数,个位数;
*/
int num=187;
int bai num=num/100;
int shi =num%100/10;
int ge =num%10;
运算符之二:赋值运算符
/*
运算符之二:赋值运算符
= += -= *= /= %=
*/
int i1=10;
int j1=10;
int i2,j2;
//连续赋值
i2=j2=10;
int i3=10,j3=20;
int num1=10;
num1 +=2; //num1=num1+2;
int num2 =12;
num2 %= 5 //num2 =num2 % 5;
short s1= 10;
//s1 =s1+2 //失败;
short +=2 //不会改变变量的数据类型
//开发中,如果希望变量实现+2的操作,有几种方法,前提 int num=10;
//方式一:num=num+2;
//方式二: num += 2;(推荐)不会改变变量的数据类型
//开发中,如果希望变量实现+2的操作,有几种方法
//方式一:num=num+1
//方式二: num += 1;
//方式三:num++;(推荐)
int i=1;
i *= 0.1; //输出为0
int m = 2;
int n = 3;
n *= m++;
System.out.println("m=" + m); // 3
System.out.println("n=" + n); //6
int n = 10;
n += (n++) + (++n); // n++ 为10 之后 n =11 ++n =12
System.out.println(n);
int n = 10;
n += (n++) ; // n=n+n++ 10+10
n+= (++n); // n=n + ++n 20+21
https://blog.csdn.net/weixin_44734925/article/details/88544710
3.运算符之三,比较运算符
/*
运算符之三,比较运算符
== != > < >= <= instance of
结论:
1、比较运算符的结果是boolean类型
2、区分 == 和 =
3、 == != 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。(面向对象)
*/
int i1 =10;
int j1 =20;
System.out.println(i1==ji); // false
System.out.println(i = j); // 20 把j幅值给i
boolean b1 =true;
boolean b2 = false ;
System.out.println(b2 ==b1); //false
System.out.println(b2 = b1 ); //把b1 幅值给 b2 ture
4.逻辑运算符
/*
运算符之四:逻辑运算符:
& && | || ! ^
说明:
1、逻辑运算符操作的都是boolean的类型变量
*/
// 区分 &和&&
//相同点:&和&&运算结果相同;
//不同点:当符号左边是false,&继续执行右边的运算,&&不再执行右边的运算
boolean b1 =ture;
int num1=10;
if(b1 &(num1++ >0 )){ // ture & true 为ture
System.out.println("我在北京");
}else {
System.out.println("我在南京");
}
System.out.println(num1); // 11
boolean b2=false;
int num2 = 10;
if(b2 && (num2++>0)){ //b2 && *** b2已经是false所以系统不识别num2++>0,
// 如果b2为true,会执行后半段。
System.out.println("我在北京");
}else{
System.out.println("我在南京");
}
System.out.println(num2); //10,不执行后半句话
//区分: | 和 ||
// 相同点:| 和 || 的运算结果相同;
// 相同点2:当符号左边是false时,二者都会执行符号右边的运算
//不同点:当符号左边是true时,|继续执行符号右边的运算,而|| 不再执行符号右边的运算
boolean b3 = false;
int num3 = 10;
if(b3 |(num3++>0) { //flase | ture 结果为ture
System.out.println("我在北京");
}else{
System.out.println("我在南京");
}
System.out.println(num3); //11
boolean b3 = ture;
int num3 = 10;
if(b3 || (num3++>0) { //ture || ** 前面已经是true,所以不执行后半句话
System.out.println("我在北京");
}else{
System.out.println("我在南京");
}
System.out.println(num3); //10
5.运算符之五(了解)
/*
运算符之五(了解)
结论:
1、位运算符操作的都是整型的数据
2、<< : 在一定范围内,每向左移1位,相当于*2,向左移拿0补
>> ; 在一定范围内,每向右移1位,相当于/2,向右移,正数用0补,负数用1补
例如:2*8 → 2<<3 / 8<<1
*/
int i=20;
i=i<<2 ;
System.out.println(i); //i=20*2^2;
int m= 12;
int n=5;
System.out.println(m&n); //与
System.out.println(m|n); // 或
System.out.println(m^n); //异或
//练习:交换两个变量的值!@!!@!@!@
int num1=10;
int num2 =20;
//方式一 : 定义临时变量的方式
int temp1;
temp1 = num1;
num1=num2;
num2=temp1; //顺时针 三角形赋值
//方式二:
//好处:不用定义临时变量,
//坏处:相加操作可能超出存储范围,只能使用数值类型,因为有- 号
num1 =num1+num2;
num2= num1-num2;
num1=num1-num2; // 相加来回减
//方式三:
// a = b^(a^b)
int num1;
int num2;
num1 = num1 ^ num2;
num2 =num1 ^ num2;
num1 = num1 ^ num2 ; //同方式二思考模式。
6.运算符之六:三元运算符
/*
运算符之六:三元运算符
1、结构 (条件表达式)? 表达式1:表达式2 。
2、说明:
1、条件表示要为boolean类型,
2、根据表达式为true,执行表达式1,false执行表达式二;
表达式1 和表达式二的要求是一致的
三元运算符可以嵌套使用;
3、凡是可以使用三元运算符的地方,都可以写成if-else 结构
反之不成立
4、如果程序既可以使用三元。又可以使用if-else,优先三元,因为整洁效率高
*/
//获取两个整数的较大值;
int m=15;
int n=5;
int max =(m>5)?m:n ;
System.out.println(max); //输出15
double num=(m>n)?2: 1.0;
// double num =(m>n)? 2:"n大" //编译错误;
String maxStr =(m>n)? "m大" :((m=n)?"m=n": "n大");
//获取三个数的最大值
int n1=12;
int n2=30;
int n3=-43;
int max1 = (n1>n2)? n1:n2;
int max2 =(max1>n3)? max1:n3;
System.out.println(max2);
//不推荐,可读性不强
int max3 = (((n1>n2)? n1:n2)>n3)?((n1>n2)? n1:n2):n3;
//改写成if-else
int max1
if (n1>n2){
max1=n1;
}else{
max1 = n2;
}if(max1>n3){
System.out.println(max1);
}else{
System.out.println(n3);
}
if(n1>n2){
if(n1>n3){
System.out.println("最大值为"+n1);
}else{
System.out.println("最大值为"+n3);
}else{
if(n2>n3){
System.out.println("最大值为"+n2);
}else{
System.out.println("最大值为"+n3);
}
}
7.分支结构中的if-else(条件判断结构)与三元运算符
/*
分支结构中的if-else(条件判断结构)
一、三种结构:
第一种:
if(条件表达式) {
}
第二种: 二选一:
if (条件表达式){
执行表达式1
}else(
执行表达2
)
第三种:多选一
if(条件表达式){
执行表达1
} else if (条件表达式){
执行表示2
} else if (条件表达式){
执行表示3
} else {
执行表达式4
}
*/
// 举例1
int heartBeats = 79 ;
if (heartBeats<60 || heartBeats >100){
System.out.println("需要作进一步检查");
}
System.out.println("检查结束");
// 举例2
int age=23;
if (age<18){
System.out.println("还能看动画片");
}else{
System.out.println("不能看动画");
}
// 举例3
if (age<0) {
System.out.println("输入非法");
}else if (age<18){
System.out.println("青少年");
}else if(age<25){
System.out.println("中年");
}else if(age<60){
System.out.println("老年");
}else{
System.out.println("老了");
}
8、算法练习,任意一个数值转成16进制
class test1{
public static void main(String[] args){
int i1 = 60 ;
int i2 = i1 &15;
String str1 = (i2>9)? (char) (i2-10+'A')+"": i2+"";
int i3 = i1 >>>4;
int i4 =i3 &15;
String str2 = (i4>9)? (char) (i4-10+'A')+"": i4+"";
System.out.println(str2+""+str1);
}
}