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)的更多相关文章

  1. JAVA 包装类 Wrapper

    包装类 针对八种基本数据类型相应的引用类型-包装类 有了类的特点,就可以调用类中的方法. 除了Boolean和Character其他的包装类的父类是Number 继承关系图: Character Bo ...

  2. Java包装类及其拆箱装箱

    Java包装类,Wrapper~由于在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型).基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提 ...

  3. [Java学习] Java包装类、拆箱和装箱详解

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...

  4. Java包装类、拆箱和装箱详解

    转载:https://www.cnblogs.com/ok932343846/p/6749488.html 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程, ...

  5. 《Java基础知识》Java包装类,拆箱和装箱

    虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...

  6. Java包装类,基本的装箱与拆箱

    我的博客 何为包装类 将原始类型和包装类分开以保持简单.当需要一个适合像面向对象编程的类型时就需要包装类.当希望数据类型变得简单时就使用原始类型. 原始类型不能为null,但包装类可以为null.包装 ...

  7. Java Service Wrapper简介与使用

    在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...

  8. 使用 Java Service Wrapper 启动java后台进程服务

    Java Service Wrapper (http://wrapper.tanukisoftware.com/doc/english/product-overview.html)可以很方便得在各个平 ...

  9. java service wrapper 级别为info导致内存剧增直至溢出

    上周,公司某一环境发生java service wrapper内存剧增导致最后被自动killed的情况,经过分析,确定导致java service wrapper(后续简称wrapper)守护进程内存 ...

  10. 利用JAVA Service Wrapper把JAVA程序做成windows服务

    今天做了一个读取数据入库的程序.由于读取的数据每天都更新,于是就想把程序做成一个服务,每天定时执行.研究了一下,发现有几种方式可以做.下面我主要记录一下JAVA Service Wrapper方式. ...

随机推荐

  1. php自动生成不重复的id

    PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据.即使使用了第二个参数,也会重复,最好的方案是结 ...

  2. rest_framework框架实现之(视图,路由,渲染器)

    一视图 一 在前面我们使用视图时继承的时APIview from rest_framework.response import Response from rest_framework.paginat ...

  3. 树分基础 bzoj 1468

    我们对于一棵树,我们找一个根,然后统计过这个点的路径有多少符合要求.怎么搞呢?我们可以先维护一个数据结构,然后把先把根作为一个距离自己为0的点放进去,然后对于每一棵子树,先找出所有的与之前的数据结构的 ...

  4. obj.offsetHeight与obj.style.height $(obj).height()与$(obj).css('height')

    相同:都可以获取obj的高度区别:(1)obj.offsetHeight可以获取外部.内嵌和内联中定义的高,而obj.style.height只能获取内联中定义的高:(2)obj.offsetHeig ...

  5. 【Flutter学习】基本组件之容器组件Container

    一,前言 Flutter控件本身通常由许多小型.单用途的控件组成,结合起来产生强大的效果,例如,Container是一种常用的控件,由负责布局.绘画.定位和大小调整的几个控件组成,具体来说,Conta ...

  6. AcWing 101. 最高的牛 (差分) 打卡

    有 NN 头牛站成一行,被编队为1.2.3…N,每头牛的身高都为整数. 当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方. 现在,我们只知道其中最高的牛是第 PP 头,它的身高是 HH ,剩 ...

  7. STM32嵌入式开发学习笔记(七):串口通信(下)

    下面我们进行几个串口通信的实际应用. 实验一:发信实验,让开发板通过串口向电脑发送信息: #include <stdio.h> #include <stm32f10x.h> # ...

  8. windows server2012r2 安装NET Framework 3.5

    在Windows Server 2012上安装一些软件,比如Oracle 11g等,经常会出现下面这样的错误:“无法安装一下功能:.NET Framework 3.5(包括.NET 2.0和3.0)” ...

  9. 关于python语言学习心得

    最近又开始学习代码了,中途停顿了2个月左右,学习贵在坚持. 内心非常渴望学会一门编程语言,对代码目前来说还不是排斥. 也没有什么好的学习方法,只是按照同事说的,买了一本书籍来,边看边练习,先熟悉它的语 ...

  10. 关于ACL访问控制的一些问题:AntiACL

    @echo off title AntiACL Made By gwsbhqt color 0a reg query "HKU\S-1-5-19" >nul 2>nul ...