parseInt和valueOf

。parseInt和valueOf。split

static int parseInt(String s) 
          将字符串参数作为有符号的十进制整数进行分析。
static Integer valueOf(int i) 
          返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s) 
          返回保持指定的 String 的值的 Integer 对象。
从返回值可以看出他们的区别   parseInt()返回的是基本类型int
而valueOf()返回的是包装类Integer  Integer是可以使用对象方法的  而int类型就不能和Object类型进行互相转换
实战说明(加深)
例1:
int i1 = Integer.parseInt(36);    int i2 = Integer.parseInt(36);
int i3 = Integer.valueof(36);     int i3 = Integer.valueof(36);
例2:
int i1 = Integer.parseInt(236);    int i2 = Integer.parseInt(236);
int i3 = Integer.valueof(236);     int i4 = Integer.valueof(236);
分别运行一下,可以发现例1,i1==i2,i3==i4,但是例2中i1==i2 ,而i3==i4 并不成立,这是因为parseInt返回的是一个有符号的Integer数值,而Valueof返回是一个实例,更根本原因是对象池中数字是一个8bit有符号型,也就是说,数字大小在-128--127之内,valueof对于相同的数字返回的id是一致的,但是超过了这个范围,就会新开辟一块区域,这就导致例2的情况出现,所以在比较大小之内是,需谨慎行事http://blog.sina.com.cn/s/blog_76671eeb0100ui23.html

splithttp://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.html

在java.lang包中有String.split()方法,返回是一个数组


我在应用中用到一些,给大家总结一下,仅供大家参考:


1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");


2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");


“.”和“|”都是转义字符,必须得加"\\";


3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");


使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。


我们看jdk doc中说明


public String[] split(String regex)


Splits this string around matches of the given regular expression.


参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码用竖线 | 分隔字符串,你将得不到预期的结果



   String[] aa = "aaa|bbb|ccc".split("|");

    //String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果

    for (int i = 0 ; i <aa.length ; i++ ) {

      System.out.println("--"+aa[i]); 

    } 



用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。


    String[] aa = "aaa*bbb*ccc".split("*");

    //String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果    

    for (int i = 0 ; i <aa.length ; i++ ) {

      System.out.println("--"+aa[i]); 

    }  



显然, + * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。


"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。


还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果,



String[] aa = "aaa\\bbb\\bccc".split("\\\\");


package javabasi;

import java.util.Scanner;

/**
 * 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
 * @author dlmu
 *
 */
public class SumA {
    public static void main (String [] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        String[]number = str.split("\\+");
        int sum = 0;
        for (int i = 0; i < str.length(); i++){
            sum = sum + Integer.parseInt(number[i]);
        }
        System.out.println(sum);
    }

}

2+22+222+2222+22222
提示异常,找不到错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at javabasi.SumA.main(SumA.java:18)


 
时间: 2024-12-25 19:38:46

parseInt和valueOf的相关文章

Integer类的parseInt和valueOf的区别

我们平时应该都用过或者见过parseInt和valueOf这两个方法.一般我们是想把String类型的字符数字转成int类型.从这个功能层面来说,这两个方法都一样,都可以胜任这个功能. 但是,我们进入源码,看下Integer类下这两个方法 我们看parseInt()这个方法是如何实现的 public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); } 我们再看valueOf()

Java中 intValue,parseInt,Valueof

  intValue() 1.intValue()是java.lang.Number类的方法,Number是一个抽象类.Java中所有的数值类都继承它.也就是说,不单是Integer有intValue方法,Double,Long等都有此方法. valueOf() String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 ,也就是 String.valueOf() 这个参数多载的方法 有以下几种 (1)String.valueOf(boolean b) : 将 bo

Integer.parseInt()和valueOf()

parseInt("1")返回的是int类型,所以如果想要将一个String类型的数字串转为原始类型int ,建议使用这个方法, 而不是使用 valueOf("1"). 因为valueOf 返回的是Integer类型,调用该方法时内部也调用了parseInt 并且自动封装为Integer 类型.且通过valueOf 输出的值赋值给int 类型实际还需要Integer 自动拆箱为int类型, 通过编译后的class 我们看到实际 是该Integer 类型又调用了 in

2017.4.14 java parseInt和valueof的区别

他们返回类型的不同是最大的原因: static int parseInt(String s)           将字符串参数作为有符号的十进制整数进行分析. static Integer valueOf(int i)           返回一个表示指定的 int 值的 Integer 实例. static Integer valueOf(String s)           返回保持指定的 String 的值的 Integer 对象. 从返回值可以看出他们的区别   parseInt()返

parseInt(),parseFloat(),valueOf(),intValue(),toString方法总结

本篇文章主要讲解一下在JAVA语言中数字型字符串和数字的转换,整型数字转换成字符串,以及个别方法之间的区别. 1.parseXxx()是SimpleDateFomat里面的方法,常用的包括parseInt(),parseFloat() 使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个. 语法: 下面给出了该方法的所有的变型: static int parseInt(String s) static int parseInt(String

Java string.valueof的用法以及与parseint的区别

一.由基本数据型态转换成String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 ,也就是 String.valueOf() 这个参数多载的方法 有以下几种 (1)String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 (2)String.valueOf(char c) : 将 char 变量 c 转换成字符串 (3)String.valueOf(char[] data) : 将 char 数组 data

闽江学院2015-2016学年下学期《软件测试》课程-第三次博客作业

1.  某网站管理系统,用户注册时,电话号码为可选输入项,输入格式为:区号-电话号码—分机号,中间用“-”隔开.以下为jsp页面上的设计,且并未对输入做任何控制. 假设系统现在需要取出中间的电话号码部分,代码如下: /** * * 该方法根据用户输入取出中间的电话号码部分 * @param strPhoneNum 电话号码,如:“0591-83279988—002” * @return 返回号码部分,如:“83279988” */ public String getPhoneNumber(Str

int与Integer的爱恨情仇

int作为java中元老级的数据类型,可谓无处不在,自从jdk5诞生了Integer,从此不在孤单. 为什么要设计Integer呢?它与int有什么区别? 一.Integer是int的包装类型,是引用类型,int是值类型. 衍生出来的特点就是: (1)Integer比较时比较地址,int比较时比较值,Integer与int比较又如何呢?留个疑问,下面再论. (2)以对象的属性存在时,Integer初始默认值为null,int为0;在方法作用域内,变量是要手动进行初始化滴,若只声明,在后面使用的时

Java Day 16

基本数据类型包装类 Integer.MAX_VALUE  Integer.parseInt(); intValue(); valueOf(); 自动装拆箱 如果是一个字节范围,数据共享 字符串中 数值排序 "20 23 4 5 6 -8 0 88" 1 package com.company; 2 3 import java.util.Arrays; 4 import java.util.Objects; 5 6 /** 7 * Created by junius on 2016/10