Java基础语法(二)(基本类型的转换,运算符)

1.基本类型的类型转换

1)自动类型转换

由字节数少的向字节数多的转换,转换的具体过程如下:

byte  a = 2;

int b = a;

 

                                                                                        0000 0010

                           0000 0000  0000 0000  00000 00000  0000 0001

因为int类型数据是由4个字节组成的,而byte类型数据是1个字节,转换的时候则补全4个字节。

示例:

public class Demo01 {
	public static void main(String[] args) {
		//由byte→short→int→long类型转换,类型自动提升,且不会报错
		byte a = 1;
		short b = a;
		int c = b;
		long d = c;
		System.out.println("a =" + a);
		System.out.println("b =" + b);
		System.out.println("c =" + c);
		System.out.println("c =" + c);

	}

}


运行结果:

 Java基础语法(二)(基本类型的转换,运算符)_第1张图片

2)强制类型转换

自动提升的反方向则为强制类型转换,格式:(typeTarget)value。

注意:由于强制转换是“缩小转换”,所以有可能损失精度。

示例:

public class Demo01 {
	public static void main(String[] args) {
		//由long→int→short→byte类型转换,类型需要强制转换,否则会报错
		long a = 1;
		int b = (int) a;
		short c = (short) b;
		byte d = (byte) c;
		System.out.println("a =" + a);
		System.out.println("b =" + b);
		System.out.println("c =" + c);
		System.out.println("c =" + c);

	}

}


运行结果:

Java基础语法(二)(基本类型的转换,运算符)_第2张图片

3)表达式的类型提升

当一个算术表达式中包含多个基本类型的数据,整个算数表达式的数据就会自动发生提升。比如:表达式中包含byte,short,int类型的数据,那么表达式就会整体提升为int类型的。

示例:

public class Demo01 {
	public static void main(String[] args) {
	byte a = 3;
	short b = 2;
	int c = 2;
	System.out.println(a + b + c);//a + b + c 结果自动提升为int类型
    System.out.println((a + b + c) + " "); //结果会提升为字符串类型
	}
}


运行结果:

Java基础语法(二)(基本类型的转换,运算符)_第3张图片


2.运算符

Java中的运算符是一种特殊的符号,用来表示数据的运算,赋值和比较等等。主要有以下几种:

1)算术运算符

示例:

public class Demo01 {
	public static void main(String[] args) {
		//加法
	 int a = 1 + 2;
	 //减法
	 int b = 1 - 2;
	 //乘法
	 int c = 1 * 2;
	 //除法
	 int d = 1 / 2;
	 //求余
	 int e = 1 % 2;
	 //先赋值,后自加
	 int f = a++;
	 //先自加,后赋值
	 int g = ++a;
	 //先赋值,后自减
	 int h = a--;
	 //先自减,后赋值
	 int i = --a;
	 
	 System.out.println("a = " + a);
	 System.out.println("b = " + b);
	 System.out.println("c = " + c);
	 System.out.println("d = " + d);
	 System.out.println("e = " + e);
	 System.out.println("f = " + f);
	 System.out.println("g = " + g);
	 System.out.println("h = " + h);
	 System.out.println("i = " + i);
	}
}

运行结果:

Java基础语法(二)(基本类型的转换,运算符)_第4张图片


2)赋值运算符

示例:

int a = 1;
int b = a;
System.out.print("a = " + a + ",b = " + b);


运行结果:

Java基础语法(二)(基本类型的转换,运算符)_第5张图片

 


3)位运算符

按位与,按位或,按位异或

第一个操作数

第二个操作数

按位与

按位或

按位异或

0

0

0

0

0

0

1

0

1

1

1

0

0

1

1

1

1

1

1

0

~非运算: 只操作一个数,在计算机底层运算,运算原理:源码除符号位外取反得到反码,反码加1得到补码,再取                      反。

<< 左移运算符:  左移后的空位用0补充

>>右移运算符:  右移后如果是负数用1补充,如果是正数用0补充

>>>无符号右移运算符:  右移后用0补充

注意:

  • 负数在计算机底层是以补码的形式存在
  • 一般位运算符只能操作整数类型的变量或值。
  • 对于正数而言,左移n位相当于乘2的n次方,右移相当于除2的n次方;
  • 由于位移是操作底层数据,所以他是相当快的乘除法

示例:

public class Demo01 {
	public static void main(String[] args) {
		int a = 5;
		int b = -5;
		System.out.println("按位与: a&b = " + (a&b));
		System.out.println("按位或: a&b =" + (a&b));
		System.out.println("按位异或: a^b =" + (a^b));
		System.out.println("非运算:a = " + (~a) + ",b = " + (~b));
		System.out.println("左移运算:a = " + (a<<1) + ",b = " + (b<<1));
		System.out.println("右移运算:a = " + (a>>1) + ",b = " + (b>>1));
		System.out.println("无符号右移运算:a = " + (a>>>1) + ",b = " + (b>>>1));
	}


运行结果:

Java基础语法(二)(基本类型的转换,运算符)_第6张图片

 

4)比较运算符

注意:

  • 基本数据类型变量和值不能和引用类型的变量和值比较
  • boolean类型的变量不能和其他任意类型的变量和值使用“==”比较
  • 两个引用类之间没有父子继承关系,也不能使用“==”进行比较

示例:

public class Demo01 {
	public static void main(String[] args) {
		int a = 5;
		int b = -5;
		int c = 5;
		System.out.println("a > b: " + (a > b));
		System.out.println("a < b: " + (a < b));
		System.out.println("a == b: " + (a == b));
		System.out.println("a == c: " + (a == c));
		System.out.println("a >= c: " + (a >= c));
		System.out.println("a <= c: " + (a <= c));
		
	}
}

运行结果:

 Java基础语法(二)(基本类型的转换,运算符)_第7张图片


5)逻辑运算符

示例:

public class Demo01 {
	public static void main(String[] args) {
		boolean a = true;
		boolean b = false;
		//&&:全部都是true,才返回true,否则返回false,有一组是fale,就不在比较下去
		System.out.println("a && b: " + (a && b));
		//&:作用与&&相同,区别:全部比较完
		System.out.println("a && b: " + (a && b));
		//||:有一个是真则返回真
		System.out.println("a || b: " + (a || b));
		//|:作用与|相同,区别:全部比较完
		System.out.println("a | b: " + (a | b));
		//!:true则返回false,反之相同
        System.out.println("!a: " + a);
        //^:两个不同时才返回true
        System.out.println(" a ^ b: " + (a ^ b));
	}
}


运行结果:

 Java基础语法(二)(基本类型的转换,运算符)_第8张图片

6)三目运算符

示例:

public class Demo01 {
	public static void main(String[] args) {
		int a = 10;
		int b = 12;
		System.out.println(a > b? "a大于b" : "a 小于 或等于 b");
	}
	
}



运行结果:

Java基础语法(二)(基本类型的转换,运算符)_第9张图片

3.运算符的优先级

其中instanceof和type和继承有关系

Java基础语法(二)(基本类型的转换,运算符)_第10张图片


你可能感兴趣的:(JavaSE)