学习笔记 P41——P46 第二章完结

P41 2.7.7 条件运算符

条件运算符的基本格式:
x?y:z
解释:x为表达式,其值为boolean型。先对x进行处理,若x值为true,则返回值为y;若x值为false,则返回值为z。 本语句相当于一个if型的条件语句。
注意:若y,z为整数型,则需要用int限定。若为字符串类型,则需用String限定。
例如:
int a=70;
String b=a>60?“及格”:“不及格”;

int a=70;
int b=a<60?0:1;

/**
 * 条件运算符
 * @author Leeson
 *
 */
public class TestOperator6 {
  public static void main(String[] args){
	  
	  int score=80;
	  String type=score<60?"不及格":"及格";
	  //相当于一个条件语句,若满足则输出冒号前半部分;不满足则输出冒号后半部分。
	  System.out.println(type);
	  
	  
	  if(score>60){
		  System.out.println("及格");
	  }else{
		  System.out.println("不及格");
	  }
	  	  
	  int a=-10;
	  System.out.println(a>0?1:(a==0?1:9)/*a等于0吗,不等于,故返回值为9*/);
	  //a大于0吗,不大于,故返回值为9
  }
}

P42 2.7.8 运算符优先级的问题
优先级如下表所示:
在这里插入图片描述
注意两点:

  1. 复杂的优先级问题,尽量用括号。
  2. 尤其注意:优先级:逻辑非 !>逻辑与 &>逻辑或 |

P43 2.8.1 自动类型转换

总的原则:小容量的数据类型可以朝着大容量的数据类型转化。
整数型<浮点型(float<double)。
整型向浮点型转化时会造成精度的损失。

详见下图:
黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
在这里插入图片描述
实例代码:

/**
 * 测试数据类型自动转化
 * @author Leeson
 *
 */
public class TestTypeConvert {
  public static void main(String[] args){
	  
	  //数据类型转化方式:大容量 to 小容量。
	  
	  //容量的比较:整数型 < float < double
	  
	  int a=12;
	  long b=a;
	  float c=a;
	  double e=c;
	  
	  //a=b; long类型不能转化为int类型:大容量不能转化为小容量。
	  //long f=1.23; 1.23为double类型,不能转化为long类型
	  
	  float g=12345L;//long类型可以转化为float型
	  
	  //特例
	  byte h=123;//byte类型的范围:-128 to 127

  }
}


P44 2.8.2 强制类型转换

理解:非要从容量大的数据类型向容量小的数据类型转化的一种转化方式。
方法:通过在要转化的数据前面加上(int),实现强制转化。
缺点:会造成精度损失(舍弃小数点后的数)或溢出。

代码示例:

/**
 * 强制类型转化
 * @author Leeson
 *
 */
public class TestTypeConvert2 {
	public static void main(String[] args){
		
		double a=3.99;
		int b=(int)a; //值为3
		
		char c='a';
		int d=c+1;
		char e=(char)d;
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
	}

}
/**
输出结果为:
3.99
3
a
98
b
*/

P45 2.8.3 基本类型转化时常见错误和问题

  1. 溢出问题: int类型 乘以 int 类型,得到的结果不再是int类型,此时会出现溢出。
    解决方法:long化左边一个数据,然后long型乘以一个int型结果还是long型,故能输出正确结果

  2. 命名问题: long类型结尾用大写的L,防止与1混淆。

示例代码:

/**
 * 数据类型转化出现的错误
 * @author Leeson
 *
 */
public class TestTypeConvertError {
   public static void main(String[] args){
	   
	   int money=1000000000;//10亿,int类型范围在30亿内
	   
	   int years=20;//20年
	   int total=years*money;
	   System.out.println("total="+total);
	   //输出为负数,故出现错误。原因在于输出超出了int范围;
	   
	   long total2=years*money;
	   System.out.println("total2="+total2);
	   //输出依旧错误,原因在于先计算等式右边时已经溢出,故赋值到等式左边时出现错误
	   
	   //改进方法:在等式右边的计算式中先将数据long化
	   long total3=(long)years*money;
	   System.out.println("total3="+total3);
	   //long化左边一个数据,然后long型乘以一个int型结果还是long型,故能输出正确结果
 
   }
}
/**
输出结果为:
total=-1474836480
total2=-1474836480
total3=20000000000
*/

P46 2.9 简单的键盘输入和输出

scanner的运用:
步骤为

  1. 导入语句:import java.util.Scanner;
  2. Scanner scanner=new Scanner(System.in);
  3. System.out.println(“请输入名字”);
    String name=scanner.nextLine();
    此处输入的是字符串类型,故用.nextLine ; 若是整数型,则用.nextInt
    注意scanner的首字母大小写。步骤2为大写,步骤3为小写。

示例代码如下:

import java.util.Scanner;
/**
 * 测试Scanner键入
 * @author Leeson
 *
 */

public class TestScanner {
	public static void main(String[] args){
		
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入名字");
		String name=scanner.nextLine();
		System.out.println("请输入性别");
		String sex=scanner.nextLine();
		System.out.println("请输入年龄");
		int age=scanner.nextInt();   //注意此处不是nextLine
		
		System.out.println("***********************");
		System.out.println("姓名为:"+name);
		System.out.println("年龄为:"+age);
		System.out.println("性别为:"+sex);
		System.out.println("来到地球多少天:"+age*365);
		System.out.println("************************");

	}

}

输入输出为:
在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值