Java数据类型
Java数据类型主要分为基本数据类型和引用数据类型
1.基本数据类型
序号 | 数据类型 | 大小/位 | 封装类 | 默认值 | 可表示范围 |
---|---|---|---|---|---|
1 | byte | 8-bit | Byte | (byte)0 | -128~127 |
2 | short | 16-bit | Short | (short)0 | -32768~32767 |
3 | int | 32-bit | Integer | 0 | -2147483648~2147483647 |
4 | long | 64-bit | Long | 0L | -9223372036854775808~9223372036854775807 |
5 | float | 32-bit | Float | 0.0F | -1.4E-45~3.4028235E38 |
6 | double | 64-bit | Double | 0.0D | 4.9E-324~1.7976931348623157E308 |
7 | boolean | but its “size” isn’t something that’s precisely defined. | Boolean | false | true或false |
8 | char | 16-bit | Character | ‘\u0000’(对应数字0,输出为空) | 0~65535 |
实例
对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。
public class PrimitiveTypeTest {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
数值自动转换
- 转换原则:从低精度向高精度转换byte 、short、int、long、float、double、char
- 数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。
字符串
从概念上讲,Java字符串就是Unicode字符序列。
子串
String greeting = "Hello";
String s = greeting.substring(0,3);
拼接
当将一个字符串与一个非字符串的值进行拼接时,后者自动转换为字符串
int age = 13;
String rating = "PG" + age;
检测字符串是否相等
Java使用equals方法检测字符串的值是否相等s.equals(t)
string1 == string2
表示两个字符串是否指向同一个对象
2.输入与输出
读取输入
Scaner in = new Scaner(System.in)
System.out.print("What is your name");
String name = in.nextLine();
格式化输出
double x = 1000.0
System.out.print("%8.2f",x);
//字符串格式化
String message = String.format("Hello,%s.Next year,you'll be %d",name,age);
文件输入与输出
文件读取
Scanner in = new Scanner(Path.of("myfile.txt"),StandardCharsets.UTF_8);
//错误写法,字符串会被单纯当做字符串
Scanner in = new Scanner("myfile.txt");
文件写入
PrintWriter out = new PrintWriter("myfile.txt",StandardCharsets.UTF_8);
3.控制流程
块作用域
public static void main(String[] args){
int n;
{
int k;// k is only defined up to here
int n;//ERROR--cant redefined n in inner block
}
}
条件语句
if(condition) statement;
循环
while(condition) statement
do{}
while(condition)
//for each循环:collection必须时可迭代对象
for (variable:collection) statement
多重选择
switch(choice)
{
case 1:
...
break;
case 2:
....
break;
default:
...
break;
}
大数
如果基本的整数和浮点数精度不能够满足需求,那么可以用java.math包中两个常用类BigInteger
和BigDecimal
BigInteger a = Biginteger.valueOf(100);
BigInteger b = new Biginteger("332984729472924729497298")
//大数的计算需要使用对应类的方法
BigInteger c = a.add(b);
4.数组
//浅拷贝使用=
//以下是深拷贝
int[] copiedNumbers = Arrays.copyOf(luckynubers,luckynumbers.length)
多维数组
int[][] magicSquare = {{1,2,3},{4,5,6},{7,8,9};
for (double []row:a)
for(double value:row)
do something with value