day03 Java概述与环境搭建(三)

1. 类型转换

自动提升,手动下降

1.1 自动类型转换

自动类型转换 (自动类型提升)

1.两种类型要兼容 比如 数值与数值之间相互兼容

2.目标类型(等号左边)大于源类型(等号右边

1.2 强制类型转换

强制类型转换 手动下降

1.两种类型要兼容

2.目标类型(等号左边)小于源类型(等号右边)

public class Test2{
	public static void main(String [] args){
		// 强制类型转换  手动下降
		// 1.两种类型要兼容
		// 2.目标类型(等号左边)小于源类型(等号右边)
		
		short s1 = 120;
		byte b1 = (byte)s1;
		System.out.println(b1);
		
		
		int i1 = 2300;
		short s2 = (short)i1;
		System.out.println(s2);
		
		long l1 = 2356;
		int i2 = (int)l1;
		System.out.println(i2);
		
		float f1 = 32.5F;
		long l2 = (long)f1;
		System.out.println(l2);
		
		
		double d1 = 20.5;
		float f2 = (float)d1;
		System.out.println(f2);
		
		
		
	}
}

1.3 特殊情况

强制类型转换

将一个过大的整数存放在较小的范围以内

public class Test1{
	public static void main(String [] args){
		// 强制类型转换
		// 将一个过大的整数存放在较小的范围以内 
        // 情况1  长度不够  数据截断
		short s1 = 257;
		byte b1 = (byte)s1;
		System.out.println(b1);
		
		// 情况2  符号位发生变化
		short s2 = 128;
		byte b2 = (byte)s2;
		System.out.println(b2);
		
		// 原码 正数的原码反码都一样  都相同  是其本身  0100 0100 0100   
		// 负数  1011 原码
		// 反码  1100 反码 符号位保持不变 其余各位取反
		// 补码  1101 补码
		
        // 变为了负数
		short s3 = 129;
		byte b3 = (byte)s3;
		System.out.println(b3);		
	}
}
// 这里ctrl + 回车 跳出代码编辑框

进行算数运算时: 多个类型不同的操作数将自动提升 为最大的数据类型

两个操作数有一个为double,计算结果提升为double。

如果操作数中没有double,有一个为float,计算结果提升为float。

如果操作数中没有float,有一个为long,计算结果提升为long。

如果操作数中没有long,有一个为int,计算结果提升为int。

如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。

特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

public class Test1{
	public static void main(String [] args){
		// 将char类型转换为int类型 
		char ch1 = 65;
		int i1 = ch1;
		System.out.println(i1);
		
		char ch2 = 'B';
		// 67  C  B1
		System.out.println(ch2 + '1' + "hello");
		
	}
}

2. 运算符

2.1 算数运算符

public class Test1{
	public static void main(String [] args){
		int a = 10;
		int b = 20;
		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b);
		
		
		int c = 10;
		int d = 3;
		System.out.println(c % d);
	}
}

 

2.2 一元运算符

++ 或者 -- 单独作为一条语句书写 在前 在后没有任何区别

++ 或者 -- 不是单独作为一条语句书写 有区别

如果++或者--在前 那么先执行++或者-- 再执行其他的语句

如果++或者--在后 那么先执行其他的 再执行++或者--

public class Test1{
	public static void main(String [] args){
		// ++ 表示自增1  
		// -- 表示自减1
		int a  = 10;
		a++; // 等价于 a = a  + 1;
		System.out.println(a);
		
		int b = 5;
		b--; // 等价于  b = b - 1;
		System.out.println(b);
		
		
		
		int c = 10;
		++c;
		System.out.println(c);
		
		int d = 5;
		--d;
		System.out.println(d);
		
		// ++ 或者 --  单独作为一条语句书写 在前 在后没有任何区别
		// ++ 或者 --  不是单独作为一条语句书写 有区别
		// 如果++或者--在前 那么先执行++或者--  再执行其他的语句
		// 如果++或者--在后 那么先执行其他的 再执行++或者--
		int e = 10;
		int f = e++;
		System.out.println("++在后,e的值是: " + e);
		System.out.println("++在后,f的值是: " + f);
		
		int h = 10;
		int k = ++h;
		System.out.println(h);
		System.out.println(k);
		
		
		
		
	}
}

 

2.3 赋值运算符

 

public class Test2{
	public static void main(String [] args){
		// 赋值运算符
		// +=  -= *= /= %=
		int a = 10;
		a += 20; // a = a + 20;
		System.out.println(a);
		
		int b = 5;
		b -= 2; // b = b - 2;
		System.out.println(b);
		
		int c = 2;
		c *= 5; //c = c * 5;
		System.out.println(c);
		
		int d = 20;
		d /= 4; // d = d / 4;
		System.out.println(d);
		
		
		int e = 100;
		e %= 3; // e = 100 % 3;
		System.out.println(e);
	}
}

2.4 关系运算符

 

public class Test1{
	public static void main(String [] args){
		// 关系运算符 最终的结果都为布尔类型
		int a = 10;
		int b = 20;
		System.out.println(a > b);
		System.out.println(a < b);
		System.out.println(a >= b);
		System.out.println(a <= b);
		System.out.println(a == b);
		System.out.println(a != b);
	}
}

2.5 逻辑运算符

 

殊情况

&& 短路与 要求两个或者多个表达式同时都成立 结果为true 真 短路与是有短路效果的 如果第一个表达式不成立 则后续的表达式不再执行

|| 短路或 要求两个或者多个表达式有一个成立 则结果为真 true 短路或是有短路效果的 如果第一个表达式已经成立 则后续的不再执行

& 与 要求两个或者多个表达式同时都成立 结果为true 真,没有短路效果

| 或 要求两个或者多个表达式有一个成立 则结果为真 true ,没有短路效

public class Test1{
	public static void main(String [] args){
		// && 短路与 要求两个或者多个表达式同时都成立 结果为true 真
		// 短路与是有短路效果的 如果第一个表达式不成立 则后续的表达式不再执行
		
		// || 短路或 要求两个或者多个表达式有一个成立 则结果为真 true 
		// 短路或是有短路效果的 如果第一个表达式已经成立 则后续的不再执行
		int a = 10;
		int b = 20;
		int c = 30;
		System.out.println((a > b) && (b < c)); // false
		System.out.println((a < b) && (b < c)); // true
		
		System.out.println((a > b) || (b < c)); // true
		System.out.println((a < b) || (b < c)); // true
		
		System.out.println("==============================================");
		
		// & 与 要求两个或者多个表达式同时都成立 结果为true 真
		// 没有短路效果
		System.out.println((a > b) & (b < c)); // false
		System.out.println((a < b) & (b < c)); // true
		
		
		// | 或 要求两个或者多个表达式有一个成立 则结果为真 true 
		// 没有短路效果
		System.out.println((a > b) | (b < c)); // true
		System.out.println((a < b) | (b < c)); // true
		
		
	}
}

 

public class Test2{
	public static void main(String [] args){
		int x=8;
		int y=9;
		System.out.println((++x==y)&&(++x!=y)); // true
		System.out.println(x); // 10
		
		int a=8;
		int b=9;
		System.out.println((a++==b) && (++a!=b)); // false
		System.out.println(a); // 9
		
		int c=8;
		int d=9;
		System.out.println((c++==d) & (++c!=d)); // false
		System.out.println(c); 
		
	}
}
public class Test3{
	public static void main(String [] args){
		int x=8;
		int y=9;
		System.out.println((++x==y)||(++x!=y)); // true
		System.out.println(x);  // 9
		
		int a=8;
		int b=9;
		System.out.println((++a==b) || (++a!=b)); // true
		System.out.println(a); // 9
		
		int c=8;
		int d=9;
		System.out.println((++c==d) | (++c!=d)); // true
		System.out.println(c); // 10

	}
}
public class Test4{
	public static void main(String [] args){
		// ! 取反 
		System.out.println(!true);
		System.out.println(!false);
	}
}

2.6 三元运算符

 

public class Test1{
	public static void main(String [] args){
		// 三元(三目)运算符 
		int age = 19;
		System.out.println(age >= 18 ? "成年了" : "未成年");
		
		
		int a = 10;
		int b = a >= 10 ? 55 : 66;
		System.out.println(b);
		
	}
}

3. Scanner接收用户输入

程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。

需要使用java.util.Scanner 类来实现接收用户输入的内容,使用此类,必须导包。

如果输入了不匹配的数据,则会出现异常:java.util.InputMismatchException

此类提供以下功能来接收不同的数据:

next() 用于接收字符串

nextInt() 用于接收int类型的整数

nextDouble()用于接收double类型的小数

 

// 导包 必须写在 类声明之前
import java.util.Scanner;  // 导包 将位于java.util包中Scanner类 引入到当前文件中 即可使用

public class Test1{
	public static void main(String [] args){
		// 使用java.util.Scanner 类来实现接收用户输入的内容
		
		// 第二步 先创建一个Scanner类型的变量
		Scanner input = new Scanner(System.in);
		
		// 第一步 先提示用户输入内容
		System.out.println("请输入您的名字");
		
		// 第三步 接收用户输入的内容 并且存放到name变量中
		String name = input.next();
		
		// 第四步 将用户输入的名字打印出来
		System.out.println("您输入的名字是:" + name);
		
		System.out.println("请输入您的年龄");
		
		int age = input.nextInt();
		
		System.out.println("你输入的年龄是:" + age);
		
		
		System.out.println("请输入您的考试成绩");
		
		double score = input.nextDouble();
		
		System.out.println("您输入的分数是:" + score);
		
		
		System.out.println("请输入您的性别");
		
		String sex = input.next();
		
		System.out.println("您输入的性别是 :" + sex);

	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值