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.rhkb.cn/news/470936.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mysql】使用宝塔面板在云服务器上安装MySQL数据库并实现远程连接

前言 使用宝塔Linux面板安装MySQL数据库并实现远程连接 使用宝塔面板安装mysql 宝塔面板&#xff0c;华为云开放3306端口 一些命令 // 命令行连接数据库 mysql -uroot -p // MySQL 5 版本 GRANT ALL ON *.* TO root% IDENTIFIED BY 替换成你的root密码 WITH GRANT OPTION; // …

性能测试|JMeter接口与性能测试项目

前言 在软件开发和运维过程中&#xff0c;接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用&#xff0c;被广泛用于进行各种性能测试&#xff0c;包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…

OpenGL ES 共享上下文实现多线程渲染

OpenGL ES 共享上下文时,可以共享哪些资源? 共享上下文实现多线程渲染 EGL 概念回顾 EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用: 与设备的原生窗口系统通信; 查询绘图表面的可用类型和配置; 创建绘图表面; 在OpenGL ES 和…

应用于新能源汽车NCV4275CDT50RKG车规级LDO线性电压调节器芯片

关于车规级芯片&#xff08;Automotive Grade Chip&#xff09;&#xff0c;车规级芯片是专门用于汽车行业的芯片&#xff0c;具有高可靠性、高稳定性和低功耗等特点&#xff0c;以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元&#xff08;ECU&#xff09;和…

MQTT协议解析 : 物联网领域的最佳选择

1. MQTT协议概述 1.1 MQTT协议是什么 MQTT : Message Queuing Telemetry Transport 模式 : 发布 / 订阅主题优点 : 代码量小、低带宽、实时可靠应用 : 物联网、小型设备、移动应用MQTT 常用端口 : 1883 MQTT是一个网络协议&#xff0c;和HTTP类似&#xff0c;因为轻量简单&…

【OH】openHarmony开发环境搭建(基于windows子系统WSL)

前言 本文主要介绍基于windows子系统WSL搭建openHarmony开发环境。 WSL与Vmware虚拟机的区别&#xff0c;可以查看WSL与虚拟机的区别 更详细的安装配置过程可参考微软官网&#xff1a; ​安装 WSL 前提 以下基于windows 111专业版进行配置&#xff0c;windows 10应该也是可以…

豆瓣均分9:不容错过的9本大模型入门宝藏书籍,非常详细收藏我这一篇就够了

在这个大模型风起云涌的时代&#xff0c;技术的边界被不断拓宽&#xff0c;AI的力量正以前所未有的方式重塑我们的世界。如果你渴望站在技术的浪尖&#xff0c;深入了解增强现实&#xff08;AR&#xff09;、机器学习&#xff08;ML&#xff09;与强化学习&#xff08;RL&#…

OCR识别铁路电子客票

随着中国铁路客运领域进入全面数字化时代&#xff0c;国家税务总局、财政部和国铁集团于2024年10月18日联合发布公告&#xff0c;自2024年11月1日起&#xff0c;推广使用“电子发票&#xff08;铁路电子客票&#xff09;”。这一举措不仅为旅客出行提供了极大的便利&#xff0c…

【学习】Fine-tuning知识汇总

Fine-tuning 微调&#xff08;Fine-tuning&#xff09;是一种迁移学习的方法&#xff0c;用于在一个预训练模型的基础上&#xff0c;通过在特定任务的数据上进行有监督训练&#xff0c;来适应该任务的要求并提高模型性能。微调利用了预训练模型在大规模通用数据上学习到的语言…

qt QKeySequence详解

1、概述 QKeySequence 是 Qt 框架中的一个类&#xff0c;用于表示和处理键盘快捷键序列。它提供了一种方便的方式来解析、存储和比较键盘快捷键&#xff0c;这些快捷键通常用于触发应用程序中的特定操作或命令。QKeySequence 支持多种格式的快捷键表示&#xff0c;包括单个按键…

【MySQL】约束

4. 约束 4.1 概述 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 注意&#xff1a;约束是作用于表中字段上的&#xff0c;可以在创建表/修改表的时候添加约束。 4.2 约束…

css:盒子模型

目录 盒子模型 边框&#xff08;border&#xff09; 内边距&#xff08;padding&#xff09; 外边距&#xff08;margin&#xff09; 盒子模型&#xff0c;浮动&#xff0c;定位 把一只大象塞进冰箱里需要三步&#xff1a;打开冰箱门&#xff0c;把大象塞进去&#xff0c;…

【最新版】Stable Diffusion4.9(AI绘画)下载及安装教程(附软件安装包)!

NO.1 软件下载 软件名称&#xff1a;Stable Diffusion4.9&#xff08;SD&#xff09;软件语言&#xff1a;中文软件大小&#xff1a;9.6G系统要求&#xff1a;Windows10或更高&#xff0c;64位操作系统 NO.2 软件介绍 Stable Diffusion Stable Diffusion是一款前沿AI绘画工…

微服务(二)

目录 1.网关路由 1.1.认识网关 1.2.快速入门 1.2.1.引入依赖 1.2.2.启动类 1.2.3.配置路由 1.3.路由过滤 2.网关登录校验 2.1.鉴权思路分析 2.2.网关过滤器 2.3.自定义过滤器 2.3.1.自定义GatewayFilter 2.3.2.自定义GlobalFilter 2.4.登录校验 2.4.1.JWT工具 …

uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用

需求 在2022年5月初&#xff0c;网络上各大平台上&#xff0c;都开始展示用户IP属地&#xff0c;在某音、某手等小视频平台以及各主流网站应用中&#xff0c;都展示IP归属地&#xff0c;如下图所示&#xff1a; 解决办法 收费文档的肯定有很多&#xff0c;基本你百度搜“归…

基于标签相关性的多标签学习

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

C++中的栈(Stack)和堆(Heap)

在C中&#xff0c;堆&#xff08;heap&#xff09;和栈&#xff08;stack&#xff09;是两种用于存储数据的内存区域。理解它们的原理和区别&#xff0c;对于优化代码性能和确保代码的安全性至关重要。以下是对C中堆栈的详细解析&#xff0c;包括它们的分配方式、优缺点、应用场…

搭建Python2和Python3虚拟环境

搭建Python3虚拟环境 1. 更新pip2. 搭建Python3虚拟环境第一步&#xff1a;安装python虚拟化工具第二步&#xff1a; 创建虚拟环境 3. 搭建Python2虚拟环境第一步&#xff1a;安装虚拟环境模块第二步&#xff1a;创建虚拟环境 4. workon命令管理虚拟机第一步&#xff1a;安装扩…

文件夹被占用了无法删除怎么办?强制粉碎文件夹你可以这样操作

在日常使用电脑的过程中&#xff0c;我们可能会遇到一些难以删除的文件夹&#xff0c;这不仅影响了我们的工作效率&#xff0c;还可能隐藏着潜在的安全风险。本文简鹿办公将向您介绍为什么某些文件夹无法直接删除&#xff0c;以及如何利用360安全卫士极速版等工具彻底粉碎这些顽…

Python 随笔

转移字符 \a 用于触发系统蜂鸣器&#xff08;要在shell上才行&#xff09; print里面用 括起来的内容位置是 """ """括起来啥样&#xff0c;输出啥样 任何值都可以当作i条件&#xff1a; 是直接把两…