1、数据类型
java中整型默认是int类型(例如:随便写一个整数40,默认是int类型)
public class First {//First类
//主方法
public static void main(String[] args) {
byte a = -128;//范围:-128~+127
short b = 3000;//范围:-32768~32767
int c = 563036566 ;//范围:-2^31~2^31-1
long d = 15630365663l ;//范围:-2^63~2^63-1,注意在末尾加'L/l'代表long类型
float f = 2.0f;//末尾加f,表示2.0不是double类型,而是浮点型
//输入语句
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(f);
}
}
2、类型转换
public class HelloWorld {
//java变量两种数据类型 基本类型 引用类型
//基本:整型 (byte(1B) short(2B) int(4B) long(8B))浮点型 (float(4B) double默认(8B)) 字符型 布尔型
//引用:类 (字符串)接口 数组 ...
public static void main(String[] args) {
//类型转换 自动类型转换 (小->大), 强制类型转换(大->小)
//自动类型转换 (小->大)
byte a = -128;
short a_b = a;
//强制类型转换(大->小),强制类型语法:(目标类型)变量
short a = -128;
byte a_b = (byte)a;
}
}
强制类型转换,数值过大容易丢失数据,优化代码
public static void main(String[] args) {
short c= 300;
if(c>=-128&& c<=127) {//在一定范围内,进行强制类型转换
byte d = (byte)c;
System.out.println(d);
}
float与int谁的精度更高? int 。
char类型
char在java中是一个16位无符号的整数。
char类型是多少字节? 如果是ACSII编码是1字节,Unicode编码是2字节。
char类型,来存放抽象符号的类型,只能放一个字符,使用单引号 ''
char a = '1';√ char a = '11';❌(只能放一个字符)
public static void main(String[] args) {
//char 类型 范围:0~65535
char a = '中';
char a1 = '\u4e2d';//u表示Unicode编码,4e2d表示十六进制数
char a2 = 20013;//抽象符号对应的十进制编码
System.out.println(a);
System.out.println(a1);
System.out.println(a2);
//结果 都是 中
//找符号对应的编码
int text = '@';
System.out.println(text);//结果 64
}
boolean类型
boolean类型占多少字节? 单独的boolean类型变量是4字节,boolean类型数组的的每一个布尔元素是1字节。
boolean a = true;
boolean[] arr = {a,false,true};//只能放true ,false
if(a) { //boolean类型一般用于条件判断
System.out.println("ok");
}
转义字符 反斜杠 ' \ '
要求把数字中的"打出来,示例:1234"5678
//转义字符
System.out.println("1234\"5678");
3、精度丢失
System.out.println((1.2-1)==0.2);输出结果为false,出现精度丢失
解决办法,使用java中的BigDecimal类
import java.math.BigDecimal;//导入BigDecimal包
public class First {
public static void main(String[] args) {
//解决精度丢失
System.out.println((1.2-1)==0.2);//结果是false
//解决办法
BigDecimal num1 = new BigDecimal(1.2);
BigDecimal num2 = new BigDecimal(1);
BigDecimal res = num1.subtract(num2);//调用减法方法substract
System.out.println(res.floatValue());//输出结果0.2
}
}