Java基础班 第二天(下)
2018-10-01 15:10
92 查看
算数运算符 ,三个代码
[code]class Demo1_Operator { //operator 运算符 public static void main(String[] args) { /* * a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符 * b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型 * c:/获取的是除法操作的商,%获取的是除法操作的余数 * %运算符 * 当左边的绝对值小于右边绝对值时,结果是左边 * 当左边的绝对值等于右边或是右边的倍数时,结果是0 * 当左边的绝对值大于右边绝对值时,结果是余数 * %运算符结果的符号只和左边有关系,与右边无关 * 任何一个正整数%2结果不是0就是1可以用来当作切换条件 */ System.out.println(10 / 3); //整数相除结果只能是整数 System.out.println(10 / 3.0); //如果想得到小数,把其中一个数变成小数,另一个数在运算的时候会自动类型提升 System.out.println(-5 % 5); System.out.println(13 % -5); } }
第二个代码就是自加自减
第三个代码是测试
[code]class Test1_Operator { public static void main(String[] args) { //第一题 /*int a = 10; int b = 10; int c = 10; a = b++; //a = 10 ,b = 11 c = --a; //a = 9, c = 9 b = ++a; //a = 10, b = 10 a = c--; //a = 9, c = 8 System.out.println("a = " + a + ",b = " + b + ",c = " + c);*/ //第二题 /*int x = 4; // 4 + 6+ 60 int y = (x++)+(++x)+(x*10); System.out.println("x = " + x + ",y = " + y);*/ //第三题问哪句会报错,为什么 byte b = 10; //b++; //b = (byte)(b + 1) b = b + 1; //当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度 System.out.println("b = " + b); } }
赋值运算符
两个代码 第一个代码比较简单 第二个代码还是存在着类型转换的问题
[code]class Test1_Operator { public static void main(String[] args) { // 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。 short s=1;s = s+1; //当short与int进行运算的时候,会提升为int类型,两个int类型相加的结果也是int类型 //short s=1;s+=1; //s = (short)(s + 1); System.out.println(s); } }
关系运算符 这个没有什么东西 就是大于 小于 不等于
逻辑运算符 这个代码没有什么东西 就是&和|的关系 还有一个短路&短路|关系,就是真假的一个判断 ,不写代码了 但是最重要的不要搞得反了 & 是与 ,|是或,&两个全为真才是真,|有一个为真就是真,|看这个样子事就是少
位运算符 这个太有意思了 6 按位取反是-7 6的反码补码和原码都一样,取反是x的补码,减1是x的反码,再取反(除了符号位),就是该数
[code]class Demo1_Operator { public static void main(String[] args) { /* * &,|,^,~ 的用法 * &:有0则0 * |:有1则1 * ^:相同则0,不同则1 * ~:按位取反 */ System.out.println(6 & 3); //2 System.out.println(6 | 3); //7 System.out.println(6 ^ 3); //5 System.out.println(~6); //-7? } } /* 110 & 011 ----------- 010 110 | 011 ----------- 111 110 ^ 011 ----------- 101 00000000 00000000 00000000 00000110 6的原码反码补码都是本身 11111111 11111111 11111111 11111001 对6取反 - 00000000 00000000 00000000 00000001 --------------------------------------- 11111111 11111111 11111111 11111000 反码 10000000 00000000 00000000 00000111 原码(-7) */
[code]class Demo2_Operator { public static void main(String[] args) { /* * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次,该数本身不变。 */ System.out.println(5 ^ 10 ^ 10); System.out.println(5 ^ 10 ^ 5); /* * 请自己实现两个整数变量的交换(不需要定义第三方变量) * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。 */ int x = 10; int y = 5; //需要第三方变量,开发推荐用这种 /*int temp; temp = x; x = y; y = temp;*/ //不需要定义第三方变量,有弊端,有可能会超出int的取值范围 /*x = x + y; //10 + 5 = 15 y = x - y; //15 - 5 = 10 x = x - y; //15 - 10 = 5*/ //不需要第三方变量,通过^来做 x = x ^ y; // 10 ^ 5 y = x ^ y; // 10 ^ 5 ^ 5 y = 10 x = x ^ y; // 10 ^ 5 ^ 10 x = 5 System.out.println("x = " + x + ",y = " + y); } }
[code]class Demo3_Operator { public static void main(String[] args) { /* * <<:左移 左边最高位丢弃,右边补齐0 * >>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1 * >>>:无符号右移 无论最高位是0还是1,左边补齐0 * 最有效率的算出2 * 8的结果 */ //左移,向左移动几位就是乘以2的几次幂 //System.out.println(12 << 1); //24 //System.out.println(12 << 2); //48 /* 00000000 00000000 00000000 00001100 12的补码 (0)0000000 00000000 00000000 000011000 24的补码 (00)000000 00000000 00000000 0000110000 48的补码 */ //右移,向右移动几位就是除以2的几次幂 //System.out.println(12 >> 1); //System.out.println(12 >> 2); /* 00000000 00000000 00000000 00001100 12的补码 000000000 00000000 00000000 0000110(0) 6 0000000000 00000000 00000000 000011(00) 3 */ //最有效率的算出2 * 8的结果 System.out.println(2 << 3); } }
三元运算符
这里面三元运算符,前面是一个判别式,如果为真,输出前面的值,如果不为真,输出后面的值,
还有一个就是键盘输入,分为三步,第一步 导包 第二部,创建对象,第三步 接受对象
阅读更多相关文章推荐
- Java基础复习第二天
- 梦入IBM之java基础第二天
- java基础第二天——基础语法
- Java基础第二天(数据类型转换、运算符、方法入门)
- JAVA基础第二天
- Java基础学习第二天
- Java Web 第二天 Servlet基础
- Java基础学习第二天——基础数据类型介绍
- java基础第二天_进制转换原理和补码存储方式
- IT十八掌作业_java基础第二天_进制转换原理和补码存储方式
- 梦入IBM之java基础第二天
- Java基础 - 第二天 Eclipse、运算符、Scanner类
- Java基础班第二天--面向对象
- 黑马程序员_Java基础加强第二天——内省/JavaBean
- IT十八掌作业_java基础第二天_进制转换原理和补码存储方式作业
- Java基础 - 第二天 Eclipse、运算符、Scanner类
- java基础第二天
- 黑马韩前成java基础学习第二天
- 复习java基础第二天(异常处理)
- java基础第二天课程总结