装箱拆箱

基本类型都有所对应的类类型.
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);
	//输出结果相同

格式化输出只能是printfformat, 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();