Java基础day4(算数运算符 关系运算符 逻辑运算符 赋值运算符 位运算符
2019-05-07 08:15
537 查看
day4思维导图
课堂总结
算术运算符
单目(一元):+ - ,++ –
双目(二元):+ - * / %
%: 取余操作和取模操作的区别,在于商
取余操作:商向0取整
模操作:商向下取整
++:前置++ 后置++
无论是前置还是后置,都对原来的变量进行+1, 对于表达式的结果不同,后置++(会缓存变量之前的值)指向的是变量+1之前的结果。
关系运算符
< > >= <=
== !=
如果两侧都是基本数据类型,则比较的是值大小
如果两侧都是引用类型,则比较的是地址是否是同一个(对象是否是同一个)
Java不支持链式比较
逻辑运算符
&&:两个表达式的结果都是true,则返回true,否则,返回false
|| :两个表达式的结果都是false,则返回false,否则返回true
! :逻辑取反。注意,只针对布尔类型有效。
短路现象:&& 第一个表达式为false,则后面的表达式不执行
|| 第一个表达式为true,则后面表达式不执行
a<b<c
a<b && b<c
赋值运算符
= 含义赋值 ,将右侧的值赋予给左侧的变量。
自运算 += -= *= /= %=…
X=x+1
X+=1
位运算符
对于补码进行的按位操作
& :,如果两个都是1,则返回1,否则返回0
| : 如果两个都是0,则返回0,否则返回1
^(异或) : 如果两个相同,则返回0,否则 ,返回1
~(取反) :一元运算符,对于某一个数的补码进行按位取反,包括符号位。
优先级:
()调整优先级
大体遵循规则:
算术运算符( + - * / )> 比较运算符( < <= > >= == ) > 位运算符( & | ^ ~ )> 逻辑运算符( && || ! )> 赋值运算符( = )
!优先级别最高。
课堂笔记
上午部分
package day4; //1.Java中的数据类型有哪些? /*两种数据类型:基本数据类型、引用类型 * 基本数据类型中:8种 byte char boolean short int long float double * 引用类型:使用class来声明的类型都可以看成是引用类型,包括接口、数组 * 特殊提一下 String属于引用类型,只不过比其他的引用类型特殊在创建方式、存储可以存储在字符串常量池中。 * 字符串常量池:是在编译期的时候向常量池中加入数据。 * 其他的包装器类型,也有缓存技术。 * * new关键字创建,一定是只要有new存在,就会在堆内存中开辟一块新空间。 * String s="abc" * String s1="abc" * String s2=new String("abc"); * String s3=new String("abc"); */ //2.将十进制的17转换成2进制,8进制和16进制,使用手工计算,并使用数值的方法验证。 //十进制转换成其他进制:下除取余法 //10001 //public class Day3homework { // public static void main(String[] args) { // System.out.println(0b10001); // System.out.println(Integer.toBinaryString(17)); // System.out.println(Integer.toOctalString(17)); // System.out.println(Integer.toHexString(17)); // System.out.println(0x11); // } //} //3.将二进制100110101转换成10进制,8进制和16进制,使用手工计算,并使用数值方法验证。 //二进制转换成十进制:乘幂,底数:2 //2^8+2^5+2^4+2^2+2^0=256+32+16+4+1=309 //public class Day3homework { // public static void main(String[] args) { // System.out.println(0b100110101); // System.out.println(Integer.toOctalString(0b100110101)); // System.out.println(Integer.toHexString(0b100110101)); //// 4 6 5 // } //} //4.手工计算-27的二进制原码、反码、补码,进行跟1进行相加。-27+1 //public class Day3homework { // public static void main(String[] args) { // System.out.println(Integer.toBinaryString(-27)); // 11111111111111111111111111100101 变成原码 // 1.........................011011 原码:-16-8-2-1=-27 // 27的原码 // 00011011 // -27的原码 ,符号位取1 // 10011011 // 11100100 反码 // 11100101 补码 // 1111111111111111111111111111111 11111111111111111111111111100101 // 使用8位机模拟 // 11100101 -27 // 00000001 1 // 11100110 符号位是1,则说明是负数, // 10011010 -16-8-4=-26 // 使用四位机模拟出现的问题 // -4-4 // 1100 -4的原码 // 1100 -4的补码 // 1100 // 1000 // 0000 0 // 10000100 -4的 原码 // 11111100 -4的补码 // 11111100 // 11111000 补码 // 10001000 原码:-8 // } //} //5.定义一个字符串s=" hello,world," // (1) 去掉字符串两的空格 //(2)截取hello //(3)去掉字符串最后的逗号 //(4)将(3)结果中的逗号替换成- public class Day3homework { public static void main(String[] args) { String s=" hello,world,"; s=s.trim(); System.out.println(s); System.out.println(s.substring(0,5));//end-start=5 System.out.println(s.substring(0,s.indexOf(","))); System.out.println(s.substring(0,s.lastIndexOf(","))); String temp=s.substring(0,s.lastIndexOf(",")); System.out.println(temp.replace(",", "-")); } }
下午部分
package day4; /* * 第三章 运算符 * 算术运算符 * 关系运算符 * 逻辑运算符 * 赋值运算符 * 位运算符 * * 有一些资料会将instanceof作为特殊运算符 * * 一、算术运算符 * 单目运算符:+取正 -取负、++ 、-- * 双目运算符:+ - * / %取余 * 三目运算符(正课) * 目(元):将一个运算符涉及到的操作数的数量称为“元” * * 1.双目运算符 * + - * / * %取余 * 余数 = 被除数 - 除数*商 * 【取余操作的规则】:被除数%除数,商向0取整。 * 取余操作,符号同被除数,结果就是数学计算中的余数 * 取整:向上取整 * 向下取整 * 向0取整 * * 10%3=1 * 3.33333----3 * 被除数-除数*商=10-3*(3)=1 * * 10%-3=1 * -3.3333----- -3 * 被除数-除数*商=10-(-3)*(-3)=1 * * -10%3= -10-(3)*(-3)=-1 * -10%-3=-10-(-3)*3=-1 * * * 【取模操作的规则】 * 也对于余数的操作 * 余数=被除数-除数*商,商向下取整 * 10 跟-3 取模: * 10-(-3)*(-4)=-2 * * 【取余操作和取模操作是两个操作】 * 区别:在于商的取法。 * */ //public class Day4_1_Operator { // public static void main(String[] args) { // System.out.println(10+3); // System.out.println(10-3); // System.out.println(10*3); // System.out.println(10/3); // // System.out.println(10%3); // System.out.println(10%-3); // System.out.println(-10%-3); // System.out.println(-10%3); // } //} /* * 2. 单目运算符 * (1)+取正(默认) —取负 * +100 * -100 * (2)++ --: 前置 ++exp 后置 exp++ * 以++为例: * 无论是前置++还是后置++,都会对变量本身进行+1,不同的是++exp和exp++的表达式结果不同 * 前置 ++exp:会对变量本身进行+1,表达式的结果是变量+1之后的结果 * 后置 exp++:会对变量本身进行+1,表达式的结果是变量+1之前的结果。 */ //public class Day4_1_Operator { // public static void main(String[] args) { //// System.out.println(+100); //// System.out.println(-100); // // int x=5; // int y=5; // System.out.println(x++);//当执行完这一句话,x已经被+1,存储成6,原来的5被缓存起来 // System.out.println(++y);//当执行完这一句话,y已经被+1,存储成6 // // System.out.println(x); // System.out.println(y); // //// 内存图。 // //// 练习: // int z=10; // z++; // ++z; // System.out.println(z);//12 // System.out.println(z++);//12 // System.out.println(++z);//14 // System.out.println(z);//14 // // System.out.println(); // } //} //二、关系运算符 //又叫做比较运算符 //返回值一定是布尔类型的,要么true,要么false //比较的是两个表达式,或者两个常数之间的关系 //> < >= <= ==等于 !=不等于 //== 等于: //两侧的值,如果两侧是基本数据类型,则比较的就是值的大小 // 如果两侧是引用类型,则比较的是地址是否相同 // 本质上,比较的就是数据域中存储的内容。 //public class Day4_1_Operator { // public static void main(String[] args) { // System.out.println(3<=5); // System.out.println(5<=5); // int a=1; // int b=2; // int c=2; // System.out.println(a==b); // System.out.println(c==b); // // String s1="abc"; // String s2="abc"; // System.out.println(s1==s2);//返回true的原因,是因为s1和s2都是指向字符串常量池中的地址 // // String s3 =new String("abc"); // String s4 =new String("abc"); // System.out.println(s3==s4);//返回false,是因为s3和s4分别在堆内存中心创建字符串。 // // System.out.println(s1!=s2);//!= ==的取反 // //// 【链式比较】java中不支持链式比较。 //// 3<x<5 //// System.out.println(3<4<5); // // } //} //三、逻辑运算符 //在计算机行业中涉及到的逻辑:与、或、非 // 第一个表达式 与/或 第二个表达式 //与&&:如果第一个表达式和第二个表达式同时返回true,则整个表达式返回true,否则返回false,代表并且。 //或||:如果两个表达式中,有任何一个表达式为true,则返回true,否则,返回false,代表或者。 //非!:原来是true,则变成false,如果原来是false,则变成true //[使用场合]:在做比较的时候,作为条件。if(条件1 && 条件2); if(条件1 || 条件2) //[与和非]存在短路现象: //与&& :当第一个表达式为false,则第二个表达式不执行 //或|| : 当第一个表达式为true,则第二个表达式不执行 //public class Day4_1_Operator { // public static void main(String[] args) { // int a=100; // int b=200; // int c=300; // System.out.println(true && true); // System.out.println(false && true); // System.out.println(a<b && b<c); // System.out.println(a<b && b>c); // // System.out.println(true ||true); // System.out.println(true ||false); // System.out.println(false ||true); // System.out.println(false ||false); // // System.out.println(a<b||c<a); // //// 证明短路现象 // System.out.println(false && (1/0)<2); // System.out.println(true || (1/0)<2); // //// 非 // System.out.println(!(a<b)); // //// !运算符优先级很高。 与的优先级高于或。 // // } //} //四、赋值运算符 //=:第一个赋值运算符 变量名 = 变量值 ,运算的时候,都是先运行=右侧,将等号右侧的内容赋值给=左侧的变量名 //自运算:支持所有的算数运算符,还有位运算 //实际的本质上,效率上来说, 自运算的效率更高。访问x的内存次数少了。 //public class Day4_1_Operator { // public static void main(String[] args) { // int x=100; //// int y=x+1; //// x=x+1;//---自运算 // x+=1; // //// int a=1; //// System.out.println(a=2); // System.out.println(x); // } //} //五、位运算符 //位运算就是对于数据的二进制存储的(补码)运算 /* * & 按位与,左侧的操作数和右侧的操作数全部都转换成补码形式, 然后对位操作。 * 规则,两个同时为1的时候,则返回1,否则返回0 * * | 按位或,规则,两个同时为0的时候,则返回0,否则返回1. * 如果有任何一个返回1,则为1,否则返回0. * * ^ 异或,规则,判断两个数是否相同,如果相同,则返回0,否则返回1. * * ~ 按位取反,所有的位,包括符号位都取反。一元运算符。 */ //public class Day4_1_Operator { // public static void main(String[] args) { // 10001100 // 00100011 // int a=0b100010; // int b=0b010001; // 000000 // int a=10; // int b=3; // 1010 // 0011 // 0010 2 // int a=60; // System.out.println(Integer.toBinaryString(60)); // int b=-3; // 0011 1100 // 1111 1101 // 0011 1100 // int a=0b100010; // int b=0b010001; // 110011; 32+16+2+1=51 // // int a=-10; // int b=-21; // 1000 1010 1111 0110补码 // 1001 0101 1110 1011补码 // 1111 1111-------如果全部位数都是1,一定是-1 // 1000 0001 // int a=0b100010; // int b=0b010001; // 110011; // int a=-10; // int b=-21; // 1000 1010 1111 0110 -10的补码 // 1001 0101 1110 1011 -21的补码 // 0001 1101 16+8+4+1=29 // System.out.println(a^b); // int a=0b10001001; //// 1..1101110110 补码----10...0010001010原码:- (128+8+2)=-138 // int a=-60; // 10111100 -----11000100---补码 // 00111011---32+16+8+2+1=59 // // System.out.println(~a); // // // // } //} //六、运算符的优先级 // 表达式中可以通过()来调整优先级 //算术运算符 >(左位移、右位移)> 比较运算符 > 位运算符 >逻辑运算符 >赋值运算符(大体的规则) //! 优先级别最高 public class Day4_1_Operator { public static void main(String[] args) { boolean b = 3>5 || 5>2 && 5<4+5; // boolean b = 3>5 || 5>2 && 5<9; // boolean b = false || true && true; // boolean b = true; System.out.println(b); } }
相关文章推荐
- Java自学之路-Java基础教程-10:Java的4种运算符-算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java 运算符: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- Java的算数运算符、关系运算符、逻辑运算符、位运算符
- 算数运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符,位运算符,字符和字符串参加运算
- Java基础之运算符(算数运算符和赋值运算符)
- java重修之路(三)算数运算符,转义字符,逻辑运算符,位运算符
- java语言基础(13)——运算符基本用法(算数、赋值、比较、逻辑、位运算符)