Java中Integer和String浅谈
Java中的基本数据类型有八种:int、char、boolean、byte、long、double、float、short。Java作为一种面向对象的编程语言,数据在Java中也是一种对象。我们用基本数据类型创建的对象,如 int x = 0;这里的x只有值这个属性,没有(或者很少)有其他的方法。这在一些需要对数据进行操作时变的很不方便,程序员需要自己编写很多代码去实现一些常用的功能,增加了工作量及程序的大小。
所以,Java中每种基本数据类型都有其对应的引用类,或者叫封装类。如int的引用类为Integer,char 的引用类为Character。这些类是在Java的编译环境中已经事先写好的类,类中已经写有大量的,针对该数据类型的常用的方法,并且这些方法是经过优化的。在编程时,我们只需要用这些类去创建对象,就可以直接调用相应的方法。有利就有弊,在创建这些类的对象时,所用的时间和空间是要比基本数据类型大,这就提高了程序的时间复杂度和空间复杂度,所以在应用时,如果不是十分必要,尽量还是使用基本数据类型。
下面,我主要介绍Integer类中的一些方法的使用。
谈到类,首先要说的就是对象的构造方法。Java中每个类都会有构造方法,用于在创建该类的对象时调用。如方法中没有对构造方法重写,则默认格式为:类名 对象名 = new 类名();重写后则根据所传参数调用对应方法。
Integer类中重写了两种构造方法。第一种为 Integer(int value),传入一个int值作为对象的值,这个方法与语句:Integer 对象名= (int)value等价。这种方法比较好理解,就不再举例。
第二种方法为Integer(String s) 这个方法构造一个Integer
对象,它表示 String
参数所指示的int值。使用与parseInt
方法(对基数为 10 的值)相同的方式将该字符串转换成int值。该方法在检测到异常,即当String s所包含的内容不是数字,或者不可解析的整数时,会抛出一个NumberFormatException。
- String s = "0101010";
- Integer i = new Integer(s);
- System.out.println(i);
结果为:101010
- String s = "dfadffcfa";
- Integer i = new Integer(s);
- System.out.println(i);
Exception in thread "main" java.lang.NumberFormatException: For input string: "dfadffcfa"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.<init>(Unknown Source)
根据以上代码可知,这种构造方法不需要用try catch或者throws来测试,因为该异常是Runtime型的异常,在程序运行时虚拟机会自动抛出。
接下来介绍几个最近在做文件压缩时用到的方法。
1、parseInt
在Integer类中,方法名为parseInt的方法有两个,所传参数不同(方法的重载)。只有一个Strirng传入的,即parseInt(String s)是将一个String中的字符进行十进制解析,返回一个static int。和上面提到的第二种构造方法一样,这个方法对于String中所含的字符也有要求,除了第一个字符可以是用来表示负值的 ASCII 减号 '-'
('\u002D'
) 外,字符串中的字符都必须是十进制数字。如果不符合要求,同样会在运行是报错,也是一个Runtime类型的异常。具体应用请看下面代码
- String s = "11234516";
- int i = Integer.parseInt(s);
- System.out.println(i);
输出结果为 11234516
- String s = "112adf34516";
- int i = Integer.parseInt(s);
- System.out.println(i);
Exception in thread "main" java.lang.NumberFormatException: For input string: "112adf34516"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
另一种parseInt需要传入String 和int两个参数,parseInt(String s, int radix),使用第二个参数指定的基数,将字符串参数解析为有符号的整数。除了第一个字符可以是用来表示负值的 ASCII 减号 '-'
('\u002D’
)外,字符串中的字符必须都是指定基数的数字。这是一种将字符串数据按照某种进制进行转化的方法,当然前提条件是字符串中字符都满足进制的要求。
- String s = "125ADF";
- int i = Integer.parseInt(s,16);
- System.out.println(i);
输出结果:1202911
异常情况就不再进行展示了。
有将字符串转化为对应进制的整数的方法,也就有将整数按照进制转化为字符串的方法。
toBinaryString、toOctalString、toHexString、toString都需要传入一个int,分别将该int的值转化为其二进制、八进制、十六进制、十进制的字符串,最高位不为0。
- String s = Integer.toBinaryString(511);
- System.out.println(s);
结果为:111111111
以上几种方法就是在做Huffman编码的压缩时用到的Integer的方法,很有实用价值。
除了这些基本数据类型的引用类型,我们最常接触到的有关数据操作的类就是String类。对于String型的数据,我们最常做的操作就是查找其中某个字符或者子字符串的索引位。这在String类中有很多的方法。Indexof(int char)返回的是指定字符在String中第一次出现的索引位,Indexof(int char,int fromIndex)则是从fromIndex位开始第一次出现char的索引位。lastIndexOf(int char)和lastIndexOf(int char,int fromIndex)正好相反,返回的是从尾到头的第一次出现的索引位。
- String s = "adlfldcidfkasdcieij";
- int index = s.indexOf("l");
- int last = s.lastIndexOf("l");
- System.out.println("index is :"+index);
- System.out.println("last is :"+last);
结果为:index is :2
last is :4
还经常会用到的操作就是截取字符串的某一段,得到新的字符串。String类中有substring的方法,同样也有重载现象存在。substring(int beginIndex)和substring(int beginIndex, int endIndex)得到的都是原字符串的子串,不过第一种是从beginIndex到原字符串尾,第二种则是从beginIndex到endIndex-1位的子串。这里就要注意,substring方法是含头不含尾的!
- String s = "adlfldcidfkasdcieij";
- String snew = s.substring(5);
- String str = s.substring(5,s.length()-1);
- System.out.println("snew is :"+snew);
- System.out.println("str is :"+str);
结果为:snew is :dcidfkasdcieij
str is :dcidfkasdciei
请注意两个子串的区别。
Java中Integer和String浅谈相关推荐
- java string与integer_Java中Integer和String浅谈
http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float ...
- java 中的单元测试_浅谈Java 中的单元测试
单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...
- Java中Integer与String类型互转
前言 在日常的Java编程中,会遇到需要将int类型转换成String类型的情况,这时候可以使用Integer类进行操作.在转换的时候,需要注意对象是否为null 一.integer转String类型 ...
- java中定义byte数组,浅谈java的byte数组的不同写法
(由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...
- java 中的排序_浅谈java中常见的排序
浅谈java中常见的排序 学过java的人都知道,排序这一部分初次接触感觉还是有点难以理解,很多地方也会用到.然而,在java中常见的排序方法:冒泡排序,选择排序,插入排序等等.下面就让我们一起揭开他 ...
- java中virtual关键字_浅谈virtual、abstract方法和静态方法、静态变量理解
说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在 ...
- java中递归删除_浅谈Java中使用递归方法删除文件
要在Java中平台无关的方式下安全地删除一个非空目录,你还需要一个算法.该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录. 只要简单地在目录中循环查找文件,再调用delete就可以 ...
- java中jquery怎么学,浅谈jQuery中的事件--Java学习网
核心提示:JQuery事件初见1.JQuery中的事件绑定其实呢,JQuery中标准的事件绑定是这样写下:(如下)代码如下:$('#btn').bind('click',function(){}):但 ...
- java中parseint函数_浅谈 js中parseInt函数的解析
首先还是从很热门的实例parseInt("09")==0说起. parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制. 比如说pa ...
最新文章
- 3-runtime 之 Tagged Pointer
- 使用富文本时修改时怎么回显数据_数据分析步骤繁琐?选对好工具,几步带你玩转数据分析...
- LIB和DLL的区别与使用,非常详细
- CloudStack设计思想
- SAP Spartacus Set Active BaseSite action执行的时间点 - Route路由触发方式
- java获取本机ipv4,并使用Google Guava 缓存
- Java-For循环
- Matlab对图像进行鼠标取点操作及K值聚类分析
- VC编写和调用DLL的简单例子
- Linus 又开怼:有时候标准就是个垃圾!
- kafka实时日志处理
- 学习jquery.pagewalkthroung.js插件记录点
- 线程间的通信之wait和notify的使用
- 各软件官网下载地址合集
- WPS启动不再默认展示“稻壳”页面 - 去除稻壳的方法
- 【ICEPAK】手把手教你热仿真
- 【SSM分布式架构电商项目-11】后台系统开发接口返回商品类目数据
- cad2012打开后闪退_2012cad闪退怎么解决win10_cad2012闪退win10系统如何修复
- nfs挂在内核或U-boot出错TT***ERROR:Cannotumount
- 一条命令搞定黑苹果双系统时差