java包装类+自动装箱

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值

注意:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值