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。

 

 

Java代码  收藏代码
  1. String s = "0101010";   
  2. Integer i = new Integer(s);   
  3. System.out.println(i);   

 

  结果为:101010

 

 

Java代码  收藏代码
  1. String s = "dfadffcfa";   
  2. Integer i = new Integer(s);   
  3. 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类型的异常。具体应用请看下面代码

 

Java代码  收藏代码
  1. String s = "11234516";   
  2. int i = Integer.parseInt(s);   
  3. System.out.println(i);  

 

输出结果为 11234516

 

Java代码  收藏代码
  1. String s = "112adf34516";   
  2. int i = Integer.parseInt(s);   
  3. 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’)外,字符串中的字符必须都是指定基数的数字。这是一种将字符串数据按照某种进制进行转化的方法,当然前提条件是字符串中字符都满足进制的要求。

 

 

Java代码  收藏代码
  1. String s = "125ADF";  
  2.  int i = Integer.parseInt(s,16);   
  3. System.out.println(i);  

 

      输出结果:1202911

      异常情况就不再进行展示了。

      有将字符串转化为对应进制的整数的方法,也就有将整数按照进制转化为字符串的方法。

      toBinaryString、toOctalString、toHexString、toString都需要传入一个int,分别将该int的值转化为其二进制、八进制、十六进制、十进制的字符串,最高位不为0。

     

 

Java代码  收藏代码
  1. String s = Integer.toBinaryString(511);   
  2. 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)正好相反,返回的是从尾到头的第一次出现的索引位。

 

 

Java代码  收藏代码
  1. String s = "adlfldcidfkasdcieij";   
  2. int index = s.indexOf("l");   
  3. int last = s.lastIndexOf("l");   
  4. System.out.println("index is :"+index);   
  5. 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方法是含头不含尾的!

     

 

Java代码  收藏代码
  1. String s = "adlfldcidfkasdcieij";   
  2. String snew = s.substring(5);   
  3. String str = s.substring(5,s.length()-1);   
  4. System.out.println("snew is :"+snew);   
  5. System.out.println("str is :"+str);  

 

结果为:snew is :dcidfkasdcieij
            str is :dcidfkasdciei

 

请注意两个子串的区别。

 

Java中Integer和String浅谈相关推荐

  1. java string与integer_Java中Integer和String浅谈

    http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float ...

  2. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  3. Java中Integer与String类型互转

    前言 在日常的Java编程中,会遇到需要将int类型转换成String类型的情况,这时候可以使用Integer类进行操作.在转换的时候,需要注意对象是否为null 一.integer转String类型 ...

  4. java中定义byte数组,浅谈java的byte数组的不同写法

    (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...

  5. java 中的排序_浅谈java中常见的排序

    浅谈java中常见的排序 学过java的人都知道,排序这一部分初次接触感觉还是有点难以理解,很多地方也会用到.然而,在java中常见的排序方法:冒泡排序,选择排序,插入排序等等.下面就让我们一起揭开他 ...

  6. java中virtual关键字_浅谈virtual、abstract方法和静态方法、静态变量理解

    说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在 ...

  7. java中递归删除_浅谈Java中使用递归方法删除文件

    要在Java中平台无关的方式下安全地删除一个非空目录,你还需要一个算法.该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录. 只要简单地在目录中循环查找文件,再调用delete就可以 ...

  8. java中jquery怎么学,浅谈jQuery中的事件--Java学习网

    核心提示:JQuery事件初见1.JQuery中的事件绑定其实呢,JQuery中标准的事件绑定是这样写下:(如下)代码如下:$('#btn').bind('click',function(){}):但 ...

  9. java中parseint函数_浅谈 js中parseInt函数的解析

    首先还是从很热门的实例parseInt("09")==0说起. parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制. 比如说pa ...

最新文章

  1. 3-runtime 之 Tagged Pointer
  2. 使用富文本时修改时怎么回显数据_数据分析步骤繁琐?选对好工具,几步带你玩转数据分析...
  3. LIB和DLL的区别与使用,非常详细
  4. CloudStack设计思想
  5. SAP Spartacus Set Active BaseSite action执行的时间点 - Route路由触发方式
  6. java获取本机ipv4,并使用Google Guava 缓存
  7. Java-For循环
  8. Matlab对图像进行鼠标取点操作及K值聚类分析
  9. VC编写和调用DLL的简单例子
  10. Linus 又开怼:有时候标准就是个垃圾!
  11. kafka实时日志处理
  12. 学习jquery.pagewalkthroung.js插件记录点
  13. 线程间的通信之wait和notify的使用
  14. 各软件官网下载地址合集
  15. WPS启动不再默认展示“稻壳”页面 - 去除稻壳的方法
  16. 【ICEPAK】手把手教你热仿真
  17. 【SSM分布式架构电商项目-11】后台系统开发接口返回商品类目数据
  18. cad2012打开后闪退_2012cad闪退怎么解决win10_cad2012闪退win10系统如何修复
  19. nfs挂在内核或U-boot出错TT***ERROR:Cannotumount
  20. 一条命令搞定黑苹果双系统时差

热门文章

  1. 2018前端常见问题整理
  2. TP获取服务器mysql版本
  3. vSphere PowerCLI安装及命令
  4. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
  5. docker 疑难杂症
  6. Ansible中文手册
  7. LunarPages空间500错误原因及解决办法
  8. Windows Phone 7 XNA开发之关于图形的配置
  9. AS3 中强制类型转换方法
  10. corosync+pacemaker+crmsh的高可用web集群的实现