Java——包装类(Wrapper)
2.7包装类(Wrapper)
基本数据类型由于不是类,不能够使用java类库里提供的大量的方法。所有在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。此时相当于基本数据类型就具有了类的特点。针对八种基本定义相应的引用类型—包装类(wrapper 或封装类)。有了类的特点,就可以调用类中的方法。
2.7.1 装箱
基本数据类型包装成包装类的实例 ---装箱
通过包装类的构造器实现:
int i = 500; Integer t = new Integer(i); |
还可以通过字符串参数构造包装类对象:
Float f = new Float(“4.56”); Long l = new Long(“asdf”); //NumberFormatException |
2.7.2 拆箱
获得包装类对象中包装的基本类型变量 ---拆箱
调用包装类的.xxxValue()方法:
boolean b = bObj.booleanValue(); |
JDK1.5之后,支持自动装箱,自动拆箱。但类型必须匹配。
2.7.3 字符串和基本数据类型的相互转换
①字符串转换成基本数据类型
通过包装类的构造器实现:
int i = new Integer(“12”); |
通过包装类的parseXxx(String s)静态方法:
Float f = Float.parseFloat(“12.1”); |
②基本数据类型转换成字符串
用字符串重载的valueOf()方法:
String fstr = String.valueOf(2.34f); |
更直接的方式:
String intStr = 5 + “” |
2.7.4 包装类用法举例
int i = 500; Integer t = new Integer(i); |
装箱:包装类使得一个基本数据类型的数据变成了类。
有了类的特点,可以调用类中的方法。
String s = t.toString(); // s = “500“,t是类,有toString方法 String s1 = Integer.toString(314); // s1= “314“ 将数字转换成字符串。 String s2=“4.56”; double ds=Double.parseDouble(s2); //将字符串转换成数字 |
拆箱:将数字包装类中内容变为基本数据类型。
int j = t.intValue(); // j = 500,intValue取出包装类中的数据 |
包装类在实际开发中用的最多的在于字符串变为基本数据类型。
String str1 = "30" ; String str2 = "30.3" ; int x = Integer.parseInt(str1) ; // 将字符串变为int型 float f = Float.parseFloat(str2) ; // 将字符串变为int型 |
我们需要掌握的:
基本数据类型、包装类、String类之间的转换!
简易版:
①基本数据类型与对应的包装类有自动装箱、自动拆箱
如:int i = 10; Integer i1 = i;//自动装箱 int j = i1;//自动拆箱 |
②基本数据类型、包装类---->String类:调用String类的重载的valueOf(Xxx xx);
String类---->基本数据类型、包装类:调用相应的包装的parseXxx(String str);
注意:String str = "123"; int i = (int)str;是错误的转法。 |
特别的Boolean类型的 赋值有误不会报异常,除了正确的返回true 其他一律返回false
代码:
package com.atguigu.java; import org.junit.Test; |
③基本数据类型包装类及String之间的相互转换
public class TestWrapper { //基本数据类型、包装类与String类之间的转换 @Test public void test2(){ //基本数据类型、包装类 --->String类:调用String类的重载的valueOf(Xxx x)方法 int i1 = 10; String str1 = i1 + "";//"10" Integer i2 = i1; String str2 = String.valueOf(i2); String str3 = String.valueOf(true);//"true" str2 = i2.toString(); System.out.println(str3); //String类--->基本数据类型、包装类:调用包装类的parseXxx(String str)方法 int i3 = Integer.parseInt(str2); System.out.println(i3); boolean b1 = Boolean.parseBoolean(str3); System.out.println(b1); //int i4 = (int)str2; } //基本数据类型与包装类之间的转化 @Test public void test1(){ int i = 10; System.out.println(i); boolean b = false; //基本数据类型--->对应的包装类:调用包装类的构造器 Integer i1 = new Integer(i); System.out.println(i1.toString()); Float f = new Float("12.3F"); System.out.println(f); //java.lang.NumberFormatException //i1 = new Integer("12abc"); //System.out.println(i1); //对于Boolean来讲,当形参是"true"返回true,除此之外返回false。 Boolean b1 = new Boolean("false"); System.out.println(b1); b1 = new Boolean("truea"); System.out.println(b1); Order o = new Order(); System.out.println("$ "+o.b);//null //包装类--->基本数据类型:调用包装类Xxx的XxxValue()方法。 int i2 = i1.intValue(); System.out.println(i2); float f1 = f.floatValue(); System.out.println(f1); boolean b2 = b1.booleanValue(); //JDK5.0以后,自动装箱和拆箱 int i4 = 12; Integer i3 = i4;//自动装箱 Boolean bb = false; int i5 = i3;//自动拆箱 } } class Order{ Boolean b; } |
2.7.5 Junit单元测试类
【eclipse快捷键】
快速生成Junit测试类:
当前工程上鼠标右键àBuild Pathà Add Libraries… à Junit à next à 选择Junit4àfinish
import org.junit.Test;
Junit单元测试类
①当前工程下-右键build path-add libraries-Junit4
②在主类中,创建一个空参的无返回值的方法,(如:public void test1())用于代码的测试,方法上声明:@Test
③导入import org.junit.Test;
④在test1()方法中,进行代码的编写。
⑤测试:双击方法名,右键run as-junit Test即可。
public class TestJunit { public static void main(String[] args) { String str = "AA"; System.out.println(str); } @Test public void test2(){ } @Test public void test1(){ String str = "AA"; System.out.println(str); m1(); } public void m1(){ System.out.println("hello world"); } } |
2.7.6 包装类练习题
利用Vector代替数组处理:从键盘读入学生成绩(以负数代表输入结束),找出最高分,并输出学生成绩等级。
提示:数组一旦创建,长度就固定不变,所以在创建数组前就需要知道它的长度。而向量类java.util.Vector可以根据需要动态伸缩。
创建Vector对象:Vector v=new Vector();
给向量添加元素:v.addElement(obj); //obj必须是对象
取出向量中的元素:Object obj=v.elementAt(0);
注意第一个元素的下标是0,返回值是Object类型的。
计算向量的长度:v.size();
若与最高分相差10分内:A等;20分内:B等;30分内:C等;其它:D等
【代码】
package com.jiang.exer; import java.util.Scanner; import java.util.Vector; public class TestScore { public static void main(String[] args) { //1.创建Scanner的对象,提示从键盘输入学生的成绩(以负数代表输入结束) Scanner s = new Scanner(System.in); System.out.println("请输入学生的成绩:(以负数代表输入结束)"); //2.for(;;),从键盘依次获取学生的成绩,并填入由Vector v=new Vector()创建的对象v中。 Vector v=new Vector(); int maxScore = 0;//记录最高分 for(;;){ int score = s.nextInt(); if(score < 0){ break; } //3.求出所有输入的正的成绩中的最高分 //获取学生成绩中的最高分 if(maxScore < score){ maxScore = score; } //依次将学生成绩村放入v中 Integer score1 = new Integer(score); v.addElement(score1); } //4.通过v.elementAt(i)依次获取填入v中的元素,同时判断一下各个分数的等级并输出。 for(int i = 0;i < v.size();i++){ Integer score = (Integer)v.elementAt(i); char level; if(maxScore - score <= 10){ level = 'A'; }else if(maxScore - score <= 20){ level = 'B'; }else if(maxScore - score <= 30){ level = 'C'; }else{ level = 'D'; } System.out.println("学生成绩为:" + score + ",等级为:" + level); } } } |
Java——包装类(Wrapper)的更多相关文章
- JAVA 包装类 Wrapper
包装类 针对八种基本数据类型相应的引用类型-包装类 有了类的特点,就可以调用类中的方法. 除了Boolean和Character其他的包装类的父类是Number 继承关系图: Character Bo ...
- Java包装类及其拆箱装箱
Java包装类,Wrapper~由于在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型).基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提 ...
- [Java学习] Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- Java包装类、拆箱和装箱详解
转载:https://www.cnblogs.com/ok932343846/p/6749488.html 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程, ...
- 《Java基础知识》Java包装类,拆箱和装箱
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- Java包装类,基本的装箱与拆箱
我的博客 何为包装类 将原始类型和包装类分开以保持简单.当需要一个适合像面向对象编程的类型时就需要包装类.当希望数据类型变得简单时就使用原始类型. 原始类型不能为null,但包装类可以为null.包装 ...
- Java Service Wrapper简介与使用
在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...
- 使用 Java Service Wrapper 启动java后台进程服务
Java Service Wrapper (http://wrapper.tanukisoftware.com/doc/english/product-overview.html)可以很方便得在各个平 ...
- java service wrapper 级别为info导致内存剧增直至溢出
上周,公司某一环境发生java service wrapper内存剧增导致最后被自动killed的情况,经过分析,确定导致java service wrapper(后续简称wrapper)守护进程内存 ...
- 利用JAVA Service Wrapper把JAVA程序做成windows服务
今天做了一个读取数据入库的程序.由于读取的数据每天都更新,于是就想把程序做成一个服务,每天定时执行.研究了一下,发现有几种方式可以做.下面我主要记录一下JAVA Service Wrapper方式. ...
随机推荐
- 【Luogu】【关卡2-3】排序(2017年10月) 【AK】
任务说明:将杂乱无章的数据变得有规律.有各种各样的排序算法,看情况使用. 这里有空还是把各种排序算法总结下吧.qsort需要会写.. P1177 [模板]快速排序 这个题目懒得写了,直接sort了.. ...
- 查看github热门项目
访问 Trending 或者可以通过菜单 Explore -> 选择 "Trending" -- 默认是查看今天在github社区活跃的仓库 在 github 搜索框输入 s ...
- Java文件拷贝方式
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444284.html 利用java.io类库,直接为源文件构建一个FileInputStream读取 ...
- mongodb4.0数据库权限配置
今天给大家分享一个关于mongodb数据库权限配置的小知识点,这里呢,我用的是mongodb4.0版本,下载地址:https://www.mongodb.com/download-center/com ...
- php时间时间戳
/* *+ ------------------------------- * 计算当天起始点和结束点时间戳 取出当天的数据 *+ ------------------------------ */ ...
- PHP ftp_cdup() 函数
定义和用法 ftp_cdup() 函数把当前目录改变为 FTP 服务器上的父目录. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_cdup(ftp_connection ...
- 跨域解决方法之window.name
window对象有一个name属性,该属性有一个特征:即在一个窗口的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每一个页面对window.name都有读写的权限,window ...
- shell重定向的顺序问题
三个默认的文件描述符 0: stdin(标准输入) 1: stdout(标准输出) 2: stderr(标准错误输出) 系统中这3个文件描述符所对应的文件: 重定向顺序 示例脚本 echo " ...
- ASP.NET Core学习——2
Application Startup ASP.NET Core为应用程序提供了处理每个请求的完整控制.Startup类是应用程程的入口(entry point),这个类可以设置配置(configur ...
- 配置ssh连接会话复用免密码登录
我们经常使用ssh连接远程主机,为了方便,避免每次登录输入密码,通常使用密钥登录.如果没有设置密钥, 则需要使用密码登录了,若每次都输入密码则十分繁琐.我们可以设置ssh连接会话复用,则登录成功后,会 ...