装箱拆箱
基本类型都有所对应的类类型.
byte对应Byte, int对应Integer, double对应Double, short对应Short, float对应Float, long对应Long. 这些数字封装类都是抽象类Number的子类.
int i1 = 1;
Integer i = new Integer(i1);
//把一个基本类型的变量,转换为Integer对象
int i2 = i.intValue();
//把一个Integer对象,转换为一个基本类型的int
把基本类型转换成封装类
int i1 = 1;
Integer i = new Integer(i1);
把封装类转换成基本类
int i1 = 1;
Integer i = new Integer(i1);
int i2 = i.intValue();
自动装箱
用 " = " 把基本类型转换成封装类这个过程就叫装箱
int i1 = 1;
Integer i = i1;
自动拆箱
装箱的逆过程
int i1 = 1;
Integer i = i1;
int i2 = i;
数据类型的最大最小值可以通过封装类的方法获取
int - Integer.MAX_VALUE
- Integer.MIN_VALUE
byte - Byte.MAX_VALUE
- Byte.MIN_VALUE
…
字符串转换
数字转换成字符串
两种方式: 1. 使用String的静态方法valueOf; 2. 先装箱再调用toString方法.
int i = 3;
//方法1
String str1 = String.valueOf(i)
//方法2
Integer it = i;
String str2 = it.toString();
字符串转数字
调用number的静态方法parseInt
double i314 = 3.14;
String i315 = String.valueOf(i314);
double i316 = Double.parseDouble(i315);
String str1 = "10";
String str2 = "1.23";
String str3 = "2.43";
String str4 = "0";
String str5 = "1244";
String str6 = "3.1a4";
int i1 = Integer.parseInt(str1);
float i2 = Float.parseFloat(str2);
double i3 = Double.parseDouble(str3);
byte i4 = Byte.parseByte(str4);
long i5 = Long.parseLong(str5);
// double i6 = Double.parseDouble(str6);
System.out.println(i316+" "+i1+" "+i2+" "+i3+" "+i4+" "+i5+" ");
//打印结果: 3.14 10 1.23 2.43 0 1244
数学方法
java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在.
四舍五入 Math.round()
随机取0-1的浮点数 Math.random()
这个值是无法取到1的, 如果数值过小可以乘倍数. 随机都是伪随机.
开方 Math.sqrt()
次方 Math.pow(x,y) x的y次方
π Math.PI
自然常数 Math.E
格式化输出
Java的格式化输出和Python相同.
%s代表字符串, %d代表数字, %n代表换行
print和format的效果是一样的, 在源代码中,print直接调用了format
String occupation= "学生"
int year = 21;
System.out.printf("我的职业是%s,年龄是%d",occupation,year);
System.out.format("我的职业是%s,年龄是%d",occupation,year);
//输出结果相同
格式化输出只能是printf和format, pirntln是不行的!!!
总长度,左对齐,补0,千位分隔符,小数点位数,本地化表达
int year = 2020;
//正常打印
System.out.format("%d%n",year);
//总长度是8,默认右对齐
System.out.format("%8d%n",year);
//总长度是8,左对齐
System.out.format("%-8d%n",year);
//总长度是8,不够补0
System.out.format("%08d%n",year);
//千位分隔符
System.out.format("%,8d%n",year*10000);
//小数点位数
System.out.format("%.2f%n",Math.PI);
/*打印结果:
2020
2020
2020
00002020
20,200,000
3.14
*/
字符
char只能存放 一个字符, 可以是一个汉字, 一个字母, 一个转义字符.
char中存放的数字会自动转换成ASCII码所对应的
char c1 = 'a'; // a
char c2 = '国'; // 国
char c3 = '\\'; // \
char c4 = '\''; // '
char c5 = '\n'; // 换行
char c6 = 1; // ASCLL码中1代表的符号
char c7 = 65; // A
char c8 = 97; // a
char的封装类是Character.
Character的常用方法
Character.isLetter('a') //判断是否为字母
Character.isDigit('a') //判断是否为数字
Character.isWhitespace(' ') //是否是空白
Character.isUpperCase('a')) //是否是大写
Character.isLowerCase('a') //是否是小写
Character.toUpperCase('a') //转换为大写
Character.toLowerCase('A') //转换为小写
//返回值均为布尔值
字符是不能直接转换成字符串的, 要使用Character的toString方法
Character.toString('S');
字符串
字符串是不可变数据类型, 如果需要改变字符串的值, 只能引入StringBuffer这个类.
String str1 = "we are";
StringBuffer str2 = new StringBuffer(str1); //以str1的字符串为值创建一个可变的字符串str2
StringBuffer是可变长的字符串
str2.append(" programmer!");
str2.delete(1,7); //删除第一位到第七位的字符(下标从0开始`, 前闭后开)
str2.insert(1,"A "); //在下标1之后插入"A "
//str2: pA rogrammer
str2.reserve(); //反转
查看可变字符串的内容长度和总空间
str2.length();
str2.capacity();