您的位置:首页 > 编程语言 > Java开发

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);
}
}

三元运算符  

这里面三元运算符,前面是一个判别式,如果为真,输出前面的值,如果不为真,输出后面的值,

还有一个就是键盘输入,分为三步,第一步 导包 第二部,创建对象,第三步 接受对象 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: