当前位置: 首页 > news >正文

Java面向对象编程进阶之包装类

在这里插入图片描述


Java面向对象编程进阶之包装类

  • 一、为什么要使用包装类
  • 二、掌握基本数据类型与包装类之间的转换
    • 1、为什么需要转换?
    • 2、如何转换?
  • 三、String与基本数据类型、包装类之间的转换
    • 1、案例
    • 2、特别注意

一、为什么要使用包装类

为了使得基本类型的数据变量具备引用类型变量的特征(封装性、继承性、多态性),我们给各个基本数据类型的变量提供了对应的包装类。
在这里插入图片描述

二、掌握基本数据类型与包装类之间的转换

1、为什么需要转换?

一方面,在有些场景下,需要使用基本数据类型对应的包装类的对象。此时就需要将基本数据类型的变量转化为包装类的对象。比如:ArrayList的add(Object obj);Object类的equal(Object obj)

对于包装类来讲,既然我们使用的是对象,那么对象是不能进行加减乘除等运算。为了能够进行这些运算,就需要将包装类的对象转化为基本数据的对象

2、如何转换?

(装箱)基本数据类型——》包装类 1、使用包装类的构造器;2、(建议)调用包装类的valueOf(xxx, xx)

package com.wrapper;public class WrapperTest {/*基本数据类型——》包装类 1、使用包装类的构造器;2、(建议)调用包装类的valueOf(xxx, xx)*/public void test1() {int i1 = 10;Integer ii1 = new Integer(i1);System.out.println(ii1.toString());  //10float f1 = 12.3F;Float ff1 = new Float(f1);       //12.3String s1 = "32.1";Float ff2 = new Float(s1);     //32.1//        String s2 = "abc";
//        Float ff3 = new Float(s2);   //报异常String s3 = "false";Boolean bb3 = new Boolean(s3);   //falseString s4 = "False";Boolean bb4 = new Boolean(s4);    //falseString s5 = "False123";Boolean bb5 = new Boolean(s5);    //false//todo 推荐使用int i2 = 10;Integer ii2 = Integer.valueOf(i2);Boolean b2 = Boolean.valueOf(true);Float f2 = Float.valueOf(12.3F);}
}

(拆箱)包装类——》基本数据类型:调用包装类的xxxValue()

package com.wrapper;public class WrapperTest {//包装类——》基本数据类型public void test3(){}public void test2() {Integer ii1 = new Integer(10);int i1 = ii1.intValue();i1 = i1 + 1;Float ff1 = new Float(12.4F);float f1 = ff1.floatValue();Boolean bb2 = Boolean.valueOf(true);boolean b2 = bb2.booleanValue();}}class Account{boolean isFlag1;Boolean isFlag2;double balance1;  //默认值 0.0Double balance2;  //默认值 null
}

注意:原来使用基本数据类型变量的位置,改成包装类以后,对于成员变量来说,其默认值变化了!

jdk5.0新特性:自动装箱、自动拆箱。

package com.wrapper;public class WrapperTest {public void test3() {//todo 自动装箱:基本数据类型——》包装类int i1 = 10;Integer ii1 = i1;   //自动装箱Integer ii2 = i1 + 1; //自动装箱Boolean bb1 = true;//todo 自动拆箱:包装类——》基本数据类型int i2 = ii1;boolean b1 = bb1;}
}

三、String与基本数据类型、包装类之间的转换

基本数据类型、包装类——》String类型:

  • 调用String的重载的静态方法valueOf(xxx,xx);
  • 基本数据类型的变量+“”
package com.wrapper;public class WeapperTest1 {/*基本数据类型——》包装类——》调用String的重载的静态方法valueOf(xxx,xx);基本数据类型的变量+“”包装类——》基本数据类型*/public static void main(String[] args) {WeapperTest1 w = new WeapperTest1();w.test1();}public void test1() {//方式1int i1 = 10;String str1 = String.valueOf(i1);System.out.println(str1); // "10"boolean b1 = true;String str2 = String.valueOf(b1);System.out.println(str2);// 方式2String str4 = i1 + "";String str5 = b1 + "";}
}

String类型——》基本数据类型、调用包装类的静态方法:parseXxx()

package com.wrapper;public class WeapperTest1 {/*基本数据类型——》包装类——》调用String的重载的静态方法valueOf(xxx,xx);基本数据类型的变量+“”包装类——》基本数据类型*/public static void main(String[] args) {WeapperTest1 w = new WeapperTest1();w.test1();w.test2();}//String类型——》基本数据类型、调用包装类的静态方法:parseXxx()public void test2(){String s1 = "123";int i1 = Integer.parseInt(s1);System.out.println(i1+10);String s2 = "true";Boolean b2 = Boolean.parseBoolean(s2);System.out.println(b2);//特别的
//        String s3 = "123a";
//        int i2 = Integer.parseInt(s3);   //报错}}

在这里插入图片描述

1、案例

利用Vector代替数组处理:从键盘读入学生成绩(以负数代表输入结束),找出最高分,并输出学生成绩等级。提示:数组一旦创建,长度就固定不变,所以在创建数组前就需要知道它的长度。而向量类java.util.Vector可以根据需要动态伸缩。
1、创建Vector对象:Vector v=new Vector();
2、给向量添加元素:v.addElement(Object obj);//obj必须是对象
3、职出向量中的元素:Object obj=v.elementAt(0);注意第一个元素的下标是0,返回值是Object类型的。
4、计算向量的长度:v.size();
5、若与最高分相差10分内:A等;20分内:B等;30分内:C等;其它:D等

package com.wrapper.exer1;import java.util.Scanner;
import java.util.Vector;/*** package:com.wrapper.exer1** @Author jimmy-yan* @Create 2024/11/14 15:17*/
public class ScoreTest {public static void main(String[] args) {// 1、创建Vector对象 Vector v=new Vector();Vector v = new Vector();Scanner scanner = new Scanner(System.in);int maxScore = 0;  //记录最高分// 2、从键盘获取多个学生成绩,存放到v中,输入负数代表结束while (true) {System.out.println("请输入学生成绩:");int intScore = scanner.nextInt();if (intScore < 0) {break;}//装箱,int——》Integer对象Integer score = Integer.valueOf(intScore);//添加学生成绩到容器v中v.addElement(score);//todo 自动装箱v.addElement(intScore);//3、获取学生成绩的最大值if (maxScore < intScore) {maxScore = intScore;}}//4、依次获取v中的每个学生成绩,与最高分进行比较,获取学生成绩并且输出for (int i = 0; i < v.size(); i++) {Object objScore = v.elementAt(i);
//            Integer integerScore = (Integer) objScore;
//            //拆箱
//            int score = integerScore.intValue();//自动拆箱int score = (Integer) objScore;char grade = ' ';if (maxScore - score <= 10) {grade = 'A';} else if (maxScore - score <= 20) {grade = 'B';} else {grade = 'D';}System.out.println("student" + i + "score is" + score + "grade is " + grade);}scanner.close();}
}

2、特别注意

在这里插入图片描述

在这里插入图片描述


http://www.mrgr.cn/news/74945.html

相关文章:

  • 会员等级经验问题
  • Unity3D 移动端如何高效实现冲击波扭曲效果详解
  • 重载函数的应用
  • 谷歌浏览器的自动翻译功能如何开启
  • Docker:查看镜像里的文件
  • 如何修改npm包
  • ue5入门教程:EventGraph
  • 期权懂|个股期权常见的风险有哪些你知道吗?
  • 企业软文推广实战技巧:如何精准触达并促成转化?
  • 基于PLC的运料小车控制系统设计(论文+仿真)
  • Openlayers中的动画
  • 企业远程控制办公方案要考虑哪些问题?私有化部署成本高不高?
  • T265相机双目鱼眼+imu联合标定(全记录)
  • 00后卷王真卷,实在是太变态了。。
  • unity 一个物体随键盘上下左右旋转和前进的脚本
  • 上线首月吸金超1.5亿元!腾讯海外SLG新游如何做买量营销?
  • 地面沉降数值模拟/三维地质建模数据处理技术应用
  • React--》掌握openapi-typescript-codegen快速生成API客户端代码
  • 浅谈商业银行信用风险PD模型及其发展
  • lcd屏幕相关内容
  • 【项目日记】仿mudou的高并发服务器 --- 整体框架搭建 ,实现时间轮模块
  • Python库进阶:高效文件读取与数据处理的PyArrow教程
  • Object.assign和array的concat
  • gorm中的主键定义,primaryKey
  • 某app最新版 vmp算法分析一
  • 【紧急】2024年github全面启用2FA安全认证才能继续使用,国内GitHub 2FA如何启用该验证操作