Java中字符串的学习(四)基本数据类型包装类的学习与使用

基本数据类型对象包装类

按照java面向对象的原则,万事万物都是对象,这也就包括了基本数据类型。

Byte   byte

Short  short

Integer    int

Long   long

Boolean   Boolean

Float  float

Double   double

Character  char

接下来就以int为例进行讲解:

在java.lang包中Integer类

Integer类在对象中包装了一个基本类型int值。Integer类型的对象包含一个int类型的字段。

具有固定的最大最小值。

基本数据类型包装类的最常见作用

就是用于基本数据类型和字符串类型之间做转换。

基本数据类型转成字符串。

基本数据类型+””;

基本数据类型.toString(基本数据类型值)

如:Integer.toString(34);//将34

字符串转成基本数据类型。

日常当中的应用:我们上网的时候都会在文本框里输入数字。比如年龄24。文本框中的数据类型全是字符串。那么我们需要判断输入的年龄是否大于20岁。这是数学运算。所以我们需要把字符串24转成整数24.再做判断。

在Integer类中有方法

Static int parseInt(String s)把字符串转换成int类型。

其他基本数据类型也是这样转。

两个特殊的:

Static Boolean parseBoolean(String s):将字符串转换成boolean值。

Character没有parsexxxxx()的方法

如果传入的字符串中有其他非数字的字符,例如abccff等,会报数字格式异常。

Java.lang.NumberFormatException.

也就是说必须传入数字格式的字符串。

基本数据包装类封装了很多方法,这些方法很多是静态的,很多是操作数据的方法,方便我们使用。

十进制转成其他进制

ToBinaryString();

toHexString();

toOctalString();

其他进制转成十进制:

ParseInt(String str,radix);

如果超出给定进制范围,也会报数字格式异常 。

基本数据类型包装类的字符串转成基本数据类型,如果不采用那种静态的parsexxxx()的方法,还可以采用先把字符串或者整数封装成相应的对象,再通过对象调用xxxvalue()方法也可以达到目的。

基本数据类型对象包装类新特性。

下面做个小练习:

Integer x = new Integer(“123”);

Integer y = new Integer(123);

System.out.println(x==y);

Sytem.out.println(x.equals(y));

结果

False

True

因为x,y是两个不同的对象。

Integer类复写了父类中的equals()方法,它比较的是数值是否相同。

JDK1.5版本以后出现的新特性。

1.5以前:Integer x = new Integer(4);

1.5以后; Integer x = 4;x是引用数据类型。右边的4是对象,因为类类型变量肯定指向对象。这就是自动装箱。其实这个4 = new Integer(4);,只不过这个动作不用咱们显式做了,JDK隐式帮咱们做了。这就是简化书写。

同时,这个x可以直接进行运算。

X = x+2,//x+2x应该先变成整数再进行运算。进行了自动拆箱。变成了int类型。和2进行加法运算。再将结果自动装箱赋给x。

那它是如何拆箱的呢?

X是个对象,这里做的其实是x.intValue().

需要注意的是如果你要使用1.5版本以后的新特性。,你需要注意x的取值范围,Integer类的对象x会多一个空值:null.会出现空指针异常。做判空操作。

小案例:

Integer m = 128;

Integer n = 128;

Integer a = 127;

Integer b = 127;

M==n false

A==b true

第一个false还是因为m和n是不同的对象。

第二个true是因为a和b指向了同一Integer对象。因为当数值在byte范围内,对于新特性,如果该数值已经存在,则不会再开辟新的空间。

这个新特性,面试可能会问到,开发不常见。一般都equlas().

时间: 03-25

Java中字符串的学习(四)基本数据类型包装类的学习与使用的相关文章

【转】Java中字符串中子串的查找共有四种方法(indexof())

原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String st

Java中字符串中子串的查找共有四种方法(indexof())

Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引. 4.int las

java中字符串String 转 int(转)

java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法:i=Integer.valueOf(s).intValue(); 这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? int -> String int i=12345; String s=""; 第一种方法:s=i+""; 第二种方法:s=

Java中字符串indexof() 的使用方法

Java中字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如果没有找到子字符串,则返回-1.如果 startindex 是负数,则 startindex 被当作零.如果它比最大的字符位置索引还大,则它被当作最大的可能索引. Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(Stri

java中内部类的创建四种情况,三种方式,及内部数据访问权限

内部类和外部类的关系,及内部静态类的数据访问权限,声明方式. 第一种,在外部类内部声明使用内部类,内部类的类型为static和非 static类型,内部类数据类型为private,protected,public 类型的访问权限.外部类为非静态声明和权限如下: package com; public class Test1 { //@author 张春蕾 private class Name{ private int i =1; public int s = 2; protected int m

Java中字符串中子串的查找方法

Java中字符串中子串的查找共有四种方法: int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引. int lastIndexOf(String str, int startIndex) :从指定的

java中的输入流(Scanner),数据类型,运算符,switch,数组的用法

//java中创建包用package相当于C#的命名空间namespace,java中导入包用import相当于C#中引入命名空间usingimport java.util.*;//导入包,*代表导入java.util包下面的所有类public class Test { /***********Scanner的使用************/// public static void main(String[] args) {//  Scanner input = new Scanner(Syst

JAVA中集合输出的四种方式

在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public static void main(String[] args) throws Exception { Set<Person> javaProgramers = new HashSet<Person>(); javaProgramers.add(new Person("aaron&qu

Java中字符串比较时==和equals的区别

==是比较两个字符串引用的地址是否相同,即是否指向同一个对象,而equals方法则比较字符串的内容是否相同. 例如String a = "abc"; String b = "abc"; a == b返回true,a.equals(b)同样返回true,这是为什么呢? 原来程序在运行时有一个字符串池,创建字符串时会先查找池中是否有相应的字符串,如果已经存在的话只需把引用指向它即可,如果没有则新建一个. 上例中创建a时,会在字符串池中首先创建一个"abc&qu

Java中字符串对象

Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池. 工作原理 当代码中出现字