http://qxzxcjq-126-com.iteye.com/blog/883283 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代码  

String s = "0101010";

Integer i = new Integer(s);

System.out.println(i);

结果为:101010

Java代码

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.(Unknown Source)

根据以上代码可知,这种构造方法不需要用try  catch或者throws来测试,因为该异常是Runtime型的异常,在程序运行时虚拟机会自动抛出。

接下来介绍几个最近在做文件压缩时用到的方法。

1、parseInt

在Integer类中,方法名为parseInt的方法有两个,所传参数不同(方法的重载)。只有一个Strirng传入的,即parseInt(String s)是将一个String中的字符进行十进制解析,返回一个static int。和上面提到的第二种构造方法一样,这个方法对于String中所含的字符也有要求,除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。如果不符合要求,同样会在运行是报错,也是一个Runtime类型的异常。具体应用请看下面代码

Java代码

String s = "11234516";

int i = Integer.parseInt(s);

System.out.println(i);

输出结果为 11234516

Java代码

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’)外,字符串中的字符必须都是指定基数的数字。这是一种将字符串数据按照某种进制进行转化的方法,当然前提条件是字符串中字符都满足进制的要求。

Java代码

String s = "125ADF";

int i = Integer.parseInt(s,16);

System.out.println(i);

输出结果:1202911

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

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

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

Java代码

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)正好相反,返回的是从尾到头的第一次出现的索引位。

Java代码

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方法是含头不含尾的!

Java代码

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

请注意两个子串的区别。

以上就是我在压缩过程中涉及到的一些关于String类和Integer类中一些方法的使用,难免有点问题,欢迎指正。

java string与integer_Java中Integer和String浅谈相关推荐

  1. java 复杂网络分析_基于复杂网络的Java程序分析工具设计与实现思路浅谈

    基于复杂网络的Java程序分析工具设计与 实现思路浅谈 摘要:近年来,随着科学技术的进步,计算机技术发展速度的加快,使得软件价值也逐步提高,不管是软件系统的应用领域,还是其规模均获得了相应的扩大,且软 ...

  2. Java中Integer和String浅谈

    Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float.short.Java作为一种面向对象的编程语言,数据在Java中也是一种对象.我们用基本 ...

  3. Java中Integer与String类型互转

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

  4. java中string转object_java中Object转String

    Object转为String的几种形式 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString ...

  5. java new string作用_java中直接new String对象?

    首先明确一点,在Java中==比较的是两个对象的地址,equals()比较的是两个对象的值,如果使用equals()来替换==,则两个输出结果都为true. 言归正传,为什么第一个返回为false? ...

  6. java中string范围_java中long parseLong(String s)方法中string(十进制数字)的范围?

    java中long parseLong(String s)方法中string(十进制数字)的范围? 來源:互聯網  2009-06-19 05:05:28  評論 分類: 電腦/網絡 >> ...

  7. java 字符串总结_Java中字符串(String)总结

    先说说JDK API: JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口,这些功能以类的形式封装). JDK API包含的 ...

  8. java date 转integer_java 中Date的各种格式转换

    把java.util.Date格式的时间转为java.sql.Date格式的时间 java.sql.Date sqldate = new java.sql.Date(date.getTime()); ...

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

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

最新文章

  1. util包下的Date与sql包下的Date之间的转换
  2. 【OpenCV 4开发详解】多通道分离与合并
  3. 以系统时间命名文件方法(C++)
  4. 实现DataGridView中同一列不同行控件类型的不同
  5. Python基础(10)--数字
  6. 转: HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝的另类解决方案
  7. 荣耀手机现在可以升级鸿蒙系统吗,鸿蒙系统升级名单正式公布,华为手机90%能升,荣耀手机却有点意外...
  8. 图像变清晰 图像放大 提高分辨率 提高清晰度
  9. Vue2.0+vuex+H5实现音乐播放及歌曲切换功能的方法及原理解释
  10. 安卓从业者应该关注:Android 6.0的运行时权限
  11. 语言怎么得到直流电压并采样_交流电AC如何转换成直流电DC?
  12. 基于小样本学习的图像分类技术综述
  13. CodeIgniter中URL含有中文字符串的解决方案
  14. 《花开在眼前》听得泪流满面
  15. Remoting Generic Async Queue (Release 2) override InitializeLifetimeService return null
  16. php从入门到精通分享,PHP从入门到精通学习路线图分享
  17. Qimage Ultimate 2021(图片批量打印工具)官方正式版V2021.104 | 终极批量图片打印软件
  18. 判断PPC或者SP平台
  19. OCCT培训笔记(刘星讲)--第1天
  20. python条件句格式_python条件语句是什么?条件语句的一般格式是什么样的?

热门文章

  1. 你可以把编程当做一项托付终身的职业
  2. 项目管理必知的7个重点
  3. 对操作系统安全构成威胁的问题
  4. 03 Java程序员面试宝典视频课程之常用类
  5. python不能创建新变量_Python之变量的创建过程!
  6. VS2017中使用码云上传项目以及问题汇总
  7. mysql分区和分表比较_MySQL分区和分表的区别与联系
  8. CVPR 2021 | 超越卷积,自注意力模型HaloNet准确率实现SOTA
  9. 有哪些好的科研和学习习惯?
  10. CVPR2020 - SLAM workshop 在线盛会预告