Java第二天

文章目录

  • Java第二天
  • 1.java中加号的使用
  • 2. java基本数据类型
  • 3.java中浮点数运算注意
  • 4.java自动类型转换规则(低精度转换为高精度)
  • 5.强制类型转换(高精度转换为低精度)
  • 6.数据类型转换练习题
  • 7基本数据类型与String类型的相互转换


1.java中加号的使用
  • 当加号左右两边都是数值型时,做加法运算,得到的结果也是数值型
  • 当加号两边任意一方为字符串型时,做字符拼接,得到的结果是字符串型

举个例子:

System.out.println(100 + 98) 输出结果为198,数值型
System.out.println(“100” + 98) 输出结果为“10098”,字符串型
2. java基本数据类型

java doble类型过长自动转换E java数据类型自动转换_System

注意与c语言类型的区别

  • java中char类型占2字节,可以存储单个汉字。c语言中char存放单个字符(ASCII码)只占1字节,不可存储汉字
  • char类型可存放数字,输出时,输出的是该数字(Unicode码)对应的字符
  • boolean类型不可用0或非0代替true或false
  • java各整数类型在不同的os操作系统上,其所占字段长度(字节大小)相同,范围固定
  • java整型常量默认为int,声明long型常量须在后加L,例如long n = 100L;
  • java浮点型常量默认为double,声明float型常量须在后加L,例如float n = 100.1f;
  • 可以把小范围赋值给大范围(等号两边左大右小,或者相等),反之不行。例如:double n = 10.1f(正确),float = 10.1(错误)。
  • 浮点数,小数点前面是0,则0可以省略如double n = .1等价于double n=0.1
  • 科学计数法5.12e2等价于5.12 * java doble类型过长自动转换E java数据类型自动转换_赋值_02
3.java中浮点数运算注意
  • java进行浮点数运算时,运算结果不是精确值,而是在一定精度范围内正确的值,例如double n1=8.1/3;double n2=2.7;此时在java内n1!=n2
public class floatt
{
	public static void main(String[] args)
	{
		double n1 = 8.1/3;
		double n2 = 2.7;
		if(n1==n2)
		{
			System.out.println("n1与n2完全相等");
		}
		else
		{
			System.out.println("不完全相等");
		}
	}
}//输出结果为不完全相等
  • 若要判断相等,可用两者差的绝对值小于给定精度的方法来判断。
4.java自动类型转换规则(低精度转换为高精度)
  • 多种类型混合计算,默认都转换为容量大的数据类型
  • 把容量小的类型赋值给容量大的类型会自动转换,反之提示错误
  • 转换规则:
1. char -> int -> long -> float -> double
  2. byte -> short -> int -> long -> float -> double
  3. (byte,short)与char不可相互自动转换
  • 定义并赋值byte时,如果赋值常量,首先判断是否符合byte范围,如果是就ok,不考虑默认int
  • 如果是一个比byte范围大的变量赋值,则无论是否符合byte范围都不可给byte赋值
  • byte,short,char三者在计算时,计算结果会返回Int型
byte a1 = 1,a2 = 2;
byte a3 = a1 + a2;//报错,此时a1 + a2的类型是int不可赋值给小精度byte


5.强制类型转换(高精度转换为低精度)
  • 强转符号优先级高,只会对最近的操作数有效
  • char类型可以保存int的常量值(符合char表示范围的整数),但不能保存int的变量值,除非用强转
6.数据类型转换练习题
short s = 12 ; //ok 在short范围内,正确
s = s - 9; //错误,s-9转换为int,相当于把int赋值给short报错
byte b = 10; //ok常量赋值,且在byte范围内
b = b + 11; //错误b+11为int型,相当于把int赋值给byte报错
b=(byte)(b + 11);//ok 相当于把b+11的int型强制转换为byte再赋值给b
char c = ‘a’;//ok
int i = 16;//ok
float d = .314f;//ok //省略了0,相当于0.314f
double result = c + i + d //ok依据char -> int -> float ,等号右边结果为float,赋值给double类型
byte b = 16;//ok
short s = 14;//ok
short t = s + b;//错误s+b为int型,不可赋值给short
7基本数据类型与String类型的相互转换
  1. 基本数据类型->String类型:

在基本数据类型的变量后面直接写加号和双引号。

public class change 
{
	public static void main(String[] args)
		{
			int n1 = 100;
			float n2 = 3.14f;
			double n3 = 3.14;
			boolean n4 = true;
			String str1 = n1 + "";
			String str2 = n2 + "";
			String str3 = n3 + "";
			String str4 = n4 + "";
			System.out.println(str1 + " " + str2 + " " + str3 + " " + str4 + " ");
		}
//输出结果100 3.14 3.14 true
  1. String类型转基本数据类型

调用x.parsex()函数

public class change 
{
	public static void main(String[] args)
		{
			int n1 = 100;
			float n2 = 3.14f;
			double n3 = 3.14;
			boolean n4 = true;
			String str1 = n1 + "";
			String str2 = n2 + "";
			String str3 = n3 + "";
			String str4 = n4 + "";
			int m1 = Integer.parseInt(str1);
			System.out.println(m1);
			float m2 = Float.parseFloat(str2);
			System.out.println(m2);
			double m3 = Double.parseDouble(str3);
			System.out.println(m3);
			boolean m4 = Boolean.parseBoolean(str4);	
			System.out.println(m4);

		} 
}
/*输出结果100
3.14
3.14
true*/