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());  //10

        float f1 = 12.3F;
        Float ff1 = new Float(f1);       //12.3

        String 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);   //false

        String s4 = "False";
        Boolean bb4 = new Boolean(s4);    //false

        String 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.0
    Double 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() {
        //方式1
        int i1 = 10;
        String str1 = String.valueOf(i1);
        System.out.println(str1); // "10"

        boolean b1 = true;
        String str2 = String.valueOf(b1);
        System.out.println(str2);

        // 方式2
        String 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、特别注意

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot与Redis的令牌主动失效机制实现

目录 前言1. 项目结构和依赖配置1.1 项目依赖配置1.2 Redis连接配置 2. 令牌主动失效机制的实现流程2.1 登录成功后将令牌存储到Redis中2.2 使用拦截器验证令牌2.3 用户修改密码后删除旧令牌 3. Redis的配置与测试4. 可能的扩展与优化结语 前言 在现代Web系统中&#xff0c;用…

yolov8-cls的onnx与tensorrt推理

本文不生产技术,只做技术的搬运工! 前言 最近需要使用yolov8-cls进行模型分类任务,但是使用ultralytics框架去部署非常不方便,因此打算进行onnx或者tensorrt去部署,查看了很多网上的帖子,并没有发现有完整复现yolov8-cls前处理(不需要后处理)的"轮子",通过自己debug…

Acrobat Pro DC 2023(pdf免费转化word)

所在位置 通过网盘分享的文件&#xff1a;Acrobat Pro DC 2023(64bit).tar 链接: https://pan.baidu.com/s/1_m8TT1rHTtp5YnU8F0QGXQ 提取码: 1234 --来自百度网盘超级会员v4的分享 安装流程 打开安装所在位置 进入安装程序 找到安装程序 进入后点击自定义安装&#xff0c;这里…

VMware和CentOS 7.6 Linux操作系统的安装使用

1. 安装VMware 安装VMware之前&#xff0c;有些电脑是需要去BIOS里修改设置开启cpu虚拟化设备支持才能安装。如果运气不好在安装过程中安装不了的话就自行百度吧。 打开 VMware 的官网: https://www.vmware.com/ 点击 product&#xff0c;往下滑找到 see desktop hypeerviso…

手把手教你:如何从零开始实施一套OA办公系统!

很多朋友都吐槽说公司的各种各样的信息啊文件啊越积越多&#xff0c;导致管理起来越来越麻烦。早就跟大家说过&#xff0c;尤其是在提高工作效率、优化资源配置和促进信息共享方面&#xff0c;OA&#xff08;办公自动化&#xff09;系统发挥着不可替代的作用&#xff0c;早安排…

网页web无插件播放器EasyPlayer.js播放器返回错误 Incorrect response MIME type 的解决方式

在使用EasyPlayer.js播放器进行视频流播放时&#xff0c;尤其是在SpringBoot环境中部署静态资源时&#xff0c;可能会遇到“Incorrect response MIME type”的错误&#xff0c;这通常与WebAssembly&#xff08;WASM&#xff09;文件的MIME类型配置有关。 WASM是一种新的代码格式…

element-plus <el-date-picker>日期选择器踩坑!!!!

我怎么一上午踩两个坑&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;大声bb&#xff09; 原来的vue2老项目是这样写的 <el-form-item label"时间" prop"time"><el-date-pickerv-model"addForm.time"typ…

# 如何查看 Ubuntu 版本?

如何查看 Ubuntu 版本&#xff1f; 要查看‌Ubuntu版本&#xff0c;你可以通过以下几种方法&#xff1a; 1. 使用‌lsb_release 命令‌查看 使用 lsb_release -a 命令可以查看Ubuntu的详细版本信息&#xff0c;包括发行版ID、版本号以及版本代号。‌ ‌### 2、查看 /etc/is…

常用的生物医药专利查询数据库及网站(很全!)

生物医药专利信息检索是药物研发前期不可或缺的一步&#xff0c;通过对国内外生物医药专利网站信息查询&#xff0c;可详细了解其专利技术&#xff0c;进而有效降低药物研发过程中的风险。 目前主要使用的生物医药专利查询网站分为两大类&#xff0c;一个是免费生物医药专利查询…

第四节-OSI-网络层

数据链路层&#xff1a;二层--MAC地址精确定位 Ethernet 2&#xff1a; 报头长度&#xff1a;18B 携带的参数&#xff1a;D MAC /S MAC/TYPE(标识上层协议)/FCS 802.3 报头长度&#xff1a;26B 携带的参数&#xff1a;D MAC/S MAC/LLC(标识上层协议)/SNAP&#xff08;标识…

Python数据分析NumPy和pandas(二十七、数据可视化 matplotlib API 入门)

数据可视化或者数据绘图是数据分析中最重要的任务之一&#xff0c;是数据探索过程的一部分&#xff0c;数据可视化可以帮助我们识别异常值、识别出需要的数据转换以及为模型生成提供思考依据。对于Web开发人员&#xff0c;构建基于Web的数据可视化显示也是一种重要的方式。Pyth…

【前端】深入浅出 - TypeScript 的详细讲解

TypeScript 是一种静态类型编程语言&#xff0c;它是 JavaScript 的超集&#xff0c;添加了类型系统和编译时检查。TypeScript 的主要目标是提高大型项目的开发效率和可维护性。本文将详细介绍 TypeScript 的核心概念、语法、类型系统、高级特性以及最佳实践。 1. TypeScript…

查询DBA_FREE_SPACE缓慢问题

这个是一个常见的问题&#xff0c;理论上应该也算是一个bug&#xff0c;在oracle10g&#xff0c;到19c&#xff0c;我都曾经遇到过&#xff1b;今天在给两套新建的19C RAC添加监控脚本时&#xff0c;又发现了这个问题&#xff0c;在这里记录一下。 Symptoms 环境&#xff1a;…

The Internals of PostgreSQL 翻译版 持续更新...

为了方便自己快速学习&#xff0c;整理了翻译版本&#xff0c;目前翻译的还不完善&#xff0c;后续会边学习边完善。 文档用于自己快速参考&#xff0c;会持续修正&#xff0c;能力有限,无法确保正确!!! 《The Internals of PostgreSQL 》 不是 《 PostgreSQL14 Internals 》…

机器学习 ---模型评估、选择与验证(1)

目录 前言 一、为什么要有训练集与测试集 1、为什么要有训练集与测试集 2、如何划分训练集与测试集 二、欠拟合与过拟合 1、什么是欠拟合与欠拟合的原因 2、什么是过拟合与过拟合的原因 一些解决模型过拟合和欠拟合问题的常见方法&#xff1a; 解决过拟合问题&#…

一文简单了解Android中的input流程

在 Android 中&#xff0c;输入事件&#xff08;例如触摸、按键&#xff09;从硬件传递到应用程序并最终由应用层消费。整个过程涉及多个系统层次&#xff0c;包括硬件层、Linux 内核、Native 层、Framework 层和应用层。我们将深入解析这一流程&#xff0c;并结合代码逐步了解…

【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题

目录 1. 单例模式 (1) 饿汉模式 (2) 懒汉模式 1. 单线程版本 2. 多线程版本 2. 解决懒汉模式产生的线程安全问题 (1) 产生线程安全的原因 (2) 解决线程安全问题 1. 通过加锁让读写操作紧密执行 方法一 方法二 2. 处理加锁引入的新问题 问题描述 …

二叉树搜索树(下)

二叉树搜索树&#xff08;下&#xff09; 二叉搜索树key和key/value使用场景 key搜索场景 只有key作为关键码&#xff0c;结构中只需要存储key即可&#xff0c;关键码即为需要搜索到的值&#xff0c;搜索场景只需要判断 key在不在。key的搜索场景实现的二叉树搜索树支持增删查…

Web项目版本更新及时通知

背景 单页应用&#xff0c;项目更新时&#xff0c;部分用户会出更新不及时&#xff0c;导致异常的问题。 技术方案 给出版本号&#xff0c;项目每次更新时通知用户&#xff0c;版本已经更新需要刷新页面。 版本号更新方案版本号变更后通知用户哪些用户需要通知&#xff1f;…

D64【python 接口自动化学习】- python基础之数据库

day64 SQL-DQL-基础查询 学习日期&#xff1a;20241110 学习目标&#xff1a;MySQL数据库-- 133 SQL-DQL-基础查询 学习笔记&#xff1a; 基础数据查询 基础数据查询-过滤 总结 基础查询的语法&#xff1a;select 字段列表|* from 表过滤查询的语法&#xff1a;select 字段…