1.包装类
- 后台Web工程师
- 1:开发模式
- 2.1:C/S 客户端/服务器
- 2.2:B/S 浏览器/服务器
- 2: 浏览器给服务器发送数据
- 3:浏览器端数据全是字符串类型
- 4:但是在java后台我们要对这些数据做转型操作
- 包装类:
- 在实际开发中,我们很多时候,需要将基本类型转为引用类型,便于后期的操作,
- 这个时候,java就给我们提供了8种包装类,分别是
- 基本类型 -> 包装类
byte ->Byte
short ->Short
int -> Integer
long -> Long
char -> Character
float -> Float
double -> Double
boolean -> Boolean
如何学习java中的类型
1:类型的解释
2:父类,子类,接口
3:jdk的版本
4:构造器
5:常用属性
6:常用方法
/**
* 测试类
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
User user = Register.register();
System.out.println("用户名\t密码\t年龄\t性别");
System.out.println(user.getName()+user.getPassword()+user.getAge()+user.getSex());
}
}
/**
* 实体类
* @author Administrator
*
*/
public class User {
private String name;
private String password;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public User(String name, String password, int age, String sex) {
super();
this.name = name;
this.password = password;
this.age = age;
this.sex = sex;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
import java.util.Scanner;
/**
*
* 业务类
* @author Administrator
*
*/
public class Register {
/*
* 注册一个用户
*/
public static User register(){
//使用键盘录入用户信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String name = sc.nextLine();
System.out.println("请输入密码");
String password = sc.nextLine();
System.out.println("请输入年龄");
String age1 = sc.nextLine();
System.out.println("请输入性别");
String sex = sc.nextLine();
//问题1:年龄是整型,但是用户传给我们的是字符串,怎么解决了?
int age = Integer.parseInt(age1);
User user = new User(name, password, age, sex);
return user;
}
}
2 自动装箱与拆箱
- Integer类的学习
* Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。
* 父类:Number
* 父接口:Serializable,序列化接口 Comparable 自然比较接口
* 构造器
* 构造方法摘要
* Integer(int value)
* 构造一个新分配的 Integer 对象,它表示指定的 int 值。
* Integer(String s)
* 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值
* 属性
* MAX_VALUE int的最大值
* MIN_VALUE int的最小值
* 方法
* 转换方法
* 获取方法
* 设置方法
* 判断方法
* 注意:Integer范围值 在-128-127 的值,是直接声明在一个Integer数组中的,这个数组是一个final类型的数组
* 所以,存在的内存在常量池中,所以获取-128-127 之间的值,直接去常量池获取,即可,不用创建Integer对象,节省内存空间
*
* 1:如何把字符串转为int?
* int a = Integer.parseInt(“100”)’
* 2:如何把int转为字符串?
*
*
*/
public class Demo {
public static void main(String[] args) {
//Integer it = new Integer(100);
//自动装箱功能:把int类型自动装载到Integer中 先装箱,再赋值
//Integer it2 = 200;
//Integer it3 = Integer.valueOf(100);
//System.out.println(it2);
//自动拆箱功能:把Integer类型中int值取出来
//Integer it4 = it2+it3; //先对it2 和 it3做拆箱功能,然后相加,得到一个int类型的值,
然后在对这个int类型的值,
做装箱操作, 最后再赋值
//Integer it4 = Integer.valueOf(it2.intValue() + it3.intValue());
//System.out.println(it4);
//System.out.println(it2+100);
//获取int类型的最大值和最小值
//int max_value = 2147483647;
//System.out.println(Integer.MAX_VALUE);
//System.out.println(Integer.MIN_VALUE);
//Integer it6 = new Integer("abc"); //NumberFormatException
//Integer it7 = 1000;
//byte b = it7.byteValue();
//System.out.println(b);
/*Integer it1 = 100;
Integer it2 = 100;
Integer it3 = new Integer(100);
Integer it4 = new Integer(100);
//在地址符做比较
System.out.println(it1==it2); //true
System.out.println(it1==it3); //false
System.out.println(it2==it3); //false
System.out.println(it3==it4); //false
System.out.println(it1.equals(it2));
System.out.println(it1.equals(it3));
System.out.println(it2.equals(it3));
System.out.println(it3.equals(it4));
//在数字上做比较 结果为0代表数字相等,结果为1,代表当前对象比你传进来的对象的值大,-1 反之则小
System.out.println(it1.compareTo(it2));
System.out.println(it1.compareTo(it4));
System.out.println(it4.compareTo(it1));
//将字符串解码为Integer
System.out.println(Integer.decode("1001")+100);*/
//在实际开发
//System.out.println(0.00001+0.00004f);
//把Integer转为int
Integer it = 1024;
System.out.println(it.intValue());
//将字符串参数作为有符号的十进制整数进行解析。
/*System.out.println(Integer.parseInt("-100"));
System.out.println(Integer.parseInt("100"));
// 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
System.out.println(Integer.parseInt("200", 10));
System.out.println(Integer.reverse(100));*/
//把10进制的数字转为2进制,8进制,16进制的字符串
System.out.println(Integer.toBinaryString(100));
System.out.println(Integer.toHexString(100));
System.out.println(Integer.toOctalString(100));
//把10进制的数字转为任意进制 范围2-36进制
System.out.println(Integer.toString(100, 37));
}
}
(1)自动装箱:把基本类型用它们对应的引用类型包装起来,使它们具有对象的特质,可以调用toString()、hashCode()、getClass()、equals()等方法。
如下:
Integer a=3;//这是自动装箱
其实编译器调用的是static Integer valueOf(int i)这个方法,valueOf(int i)返回一个表示指定int值的Integer对象,
那么就变成这样:
Integer a=3; => Integer a=Integer.valueOf(3);
(2)拆箱:跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。
如下:
int i = new Integer(2);//这是拆箱
编译器内部会调用int intValue()返回该Integer对象的int值
注意:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。