Integer.parseInt()和Integer.valueOf()有什么区别

Integer.parseInt()和Integer.valueOf()有区别吗?

 

当然有   他们有本质区别

Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了。 

而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性


 


Integer.parseInt()把String   型转换为Int型,   
    

Integer.valueOf()把String   型转换为Integer对象。


大概知道一点了,就是说Integer.valueOf(S)是针对包装类来说的,而Integer.parseInt(s) 是针对变量而言


 


 


不是很复杂,知道以下的知识就够了:


1.Java 包括两种数据类型:
   原始数据类型(primitive data type):int, byte, float, long, boolean ...
   对象(Object):其他的都是对象,包括数组。




2.每种 原始数据类型 都有一个相对应的包装类(Wrapper Class):
   如 int 对应 Integer, float 对应 Float,有如下特性:


     1)包装类里的数值是无法修改的


     2)都有一个 构造方法,参数为 对应的原始数据类型,比如:
       new Integer (10), new Boolean (true)


     3)都有一个 构造方法,参数为一个字符串,把字符串转换为值,比如:
       new Integer ("10"), new Boolean ("true")

 

    4)有一个方法,可以把存在包装类里的值取出来:
        Integer.intValue(), Float.floatValue()&#59;


     5)有一个静态方法,不用创建一个对象就可以把字符串转换为值,比如:
        int i = Integer.parseInt("10")&#59;




3.String 和 StringBuffer
   每一个 Object 都有一个 toString() 函数。
   Java 里使用 操作符重载的地方只有一个: + 操作:
   如果两个操作数中有一个是 String,就调用另一个操作数的 toString,结果就变成
   两个 String 的相加。


   常用在 Exception 的处理中,比如:
   try {
   }catch (Exception e){
     System.out.println ("Error: " + e)&#59;
   }
   处理过程:"Error: " + e ->; "Error: " + e.toString()


   如果是 String 和 基本数据类型相加,就先把这个基本数据类型用他的包装类处理。
   "String" + 123 ->; "String" + Integer(123) ->; "String" + Integer(123).toString()

 

  String + String 的过程,Java 的内部处理过程(1.4以后)实际上是这样的:
   "String1" + "String2" ->; new StringBuffer("String1").append("String2").toString()


   先建立一个 StringBuffer, 再用 append 计算,最后把 StringBuffer 转换成 String
   原因是 String 是 不可修改的,StringBuffer 是可以修改的,字符串计算时还是用
   StringBuffer 比较快


所以,数据转换:
   int ->; String
    String newValue = "" + 10&#59;
   String ->; int
    int i = (new Integer("10")).intValue()&#59;
    int i = Integer.parseInt("10")&#59;

 

 

 学语言 ,最根本的还是查看官方文档 ,下面查查API 吧 

 

new Integer.valueof()返回的是Integer的对象。
Integer.parseInt() 返回的是一个int的值。
new Integer.valueof().intValue();返回的也是一个int的值。

 

parseInt

public static int parseInt(String s, int radix) throws NumberFormatException

以第二个参数所指定基数将字符串参数分析为一个带符号的整数。除了第一个字符可以用 ASCII 的减号 '-'来表示一个负值外,字符串中的字符必须是指定基数的数(由 Character.digit 是否返回非负值决定)。返回作为结果的整数值。

 

参数:

s - 包含整数的 String 。

radix - 使用的进制

返回值:

指定基数的字符串参数所表示的整数。

抛出: NumberFormatException

若该串不包含一个可分析的整数。

parseInt

public static int parseInt(String s) throws NumberFormatException

将字符串参数作为带符号十进制整数来分析。除过第一个字符为 ASCII 字符中减号 '-' 表示的负数,字符串中的字符都必须是十进制数。

 

参数:

s - 串。

返回值:

十进制参数表示的整数。

抛出: NumberFormatException

若该串不包含一个可分析的整数。

valueOf

public static Integer valueOf(String s, int radix) throws NumberFormatException

返回初始化为指定 String 值的新的 Integer 对象。若该 String 不能作为 int 分析,则抛出异常。

 

参数:

s - 待分析的字符串。

返回值:

新创建的 Integer ,将其以指定基数初始化为字符串参数所表示的值。

抛出: NumberFormatException

若 String不包含可分析的整数。

valueOf

public static Integer valueOf(String s) throws NumberFormatException

返回初始化为指定 String 值的新的 Integer 对象。若该 String 不能作为 int 分析,则抛出异常。假设基数为 10 。

 

参数:

s - 待分析的字符串。

返回值:

新创建的 Integer ,将其初始化为字符串参数所表示的值。

抛出: NumberFormatException

如果该串不包含一个可分析的整数。

 

 

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类型进行互相转换

int zhuan=Integer.parseInt(chuan);
int zhuanyi=Integer.valueOf(chuan); 为什么你的程序返回值都可以用int来接收呢?  因为Integer和int可以自动转换
Integer i = 5;   int k  = i;像是这样表示是没有编译错误的

 


例题:

设有下面两个赋值语句:
a = Integer.parseInt(“123”);
b = Integer.valueOf(“123”).intValue();
下述说法正确的是(  d  )。
A、a是整数类型变量,b是整数类对象。
B、a是整数类对象,b是整数类型变量。
C、a和b都是整数类对象并且值相等。 
D、a和b都是整数类型变量并且值相等。

详细解析:
parseInt(String s )方法是类Integer的静态方法,它的作用就是将形参 s 转化为整数,比如:
Interger.parseInt("1")=1;
Integer.parseInt("20")=20;
Integer.parseInt("324")=324;
当然,s 表示的整数必须合法,不然是会抛异常的。
valueOf(String s )也是Integer类的静态方法,它的作用是将形参 s 转化为Integer对象,
什么是Integer对象,Integer就是基本数据类型int型包装类,就是将int包装成一个类,这样在很多场合下是必须的。如果理解不了,你就认为int是Integer的mini版,好用了很多,但也丢失了一些功能,好了,看代码:
Interger.valueOf("123")=Integer(123)
这时候Integer(123)就是整数123的对象表示形式,它再调用intValue()方法,就是将123的对象表示形式转化为基本数据123
所以,选择D

https://www.cnblogs.com/panxuejun/p/6148493.html

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java编写智能合约_简单的⽤java代码实现智能合约 简单的⽤java代码实现智能合约 简单理解智能合约: 所谓智能合约,从另⼀个⾓度望过去,就是写⼊了不可篡改的电⼦账簿中的,可执⾏但不可篡改的程序代码⽽已。 ⼀、 编写⽣成jar包 ⼆、 通过⽂件流的⽅式读取jar,获取到每个class对象对应的字节数组 1.⾸先获取到jar对应的字节输⼊流 String jarPath = "/nghb/jar/MyFirstDemo.jar"; File file = new File(jarPath); System.out.println("⽂件的长度:"+file.length()); byte [] buffer = new byte[Integer.parseInt(String.valueOf(file.length()))]; FileInputStream fis = new FileInputStream(file); int size = Integer.parseInt(String.valueOf(file.length())); int offset; int read =0; //int result = fis.read(buffer,0,Integer.parseInt(String.valueOf(file.length()))); // 虽然知道了file⽂件的长度,但是还是要⽤for循环把流读到数组中,因为可能存在fis不⼀定会⼀次read完所有数据到字节数组中 for(offset = 0;(read = fis.read(buffer,offset,size-offset)) != -1 && offset < size; offset += read){ ; } 2.根据获取到的字节流输⼊数组,拆分字节流,拆分为jar包中每个类class对象对应的字节流 // JarInputStream专门⽤来处理jar包流的 JarInputStream jis = new JarInputStream(new ByteArrayInputStream(buffer)); Map byteMap = new HashMap(); JarEntry nextEntry = null; while((nextEntry=jis.getNextJarEntry()) != null){ if(!nextEntry.isDirectory() && nextEntry.getName().endsWith(".class")){ // 层层获取到jar包的jarEntry,替换为class对象中的className形式 String name = nextEntry.getName().replaceAll("/",".").replaceAll(".class",""); byte [] classByte = generateByteOfClass(jis); byteMap.put(name,classByte); } } /* * @Author ZDLS * @Description 根据流的⽅式,读⼊jar中的class对象对应的字节流 * @Date 下午 16:44 2021/1/26 0026 * @Param * @return */ private byte [] generateByteOfClass(JarInputStream jarInputStream) throws Exception{ List bufs = null; byte [] result = null; int total = 0; // 整数的最⼤取值 int remaining = 2147483647; int n=0; do{ byte [] buf = new byte[Math.min(remaining,8192)]; int nread = 0; // 跳出for循环的情况有:buf不够⽤,这个时间n为0;流读取完了n的返回值为-1 for(nread=0; (n = jarInputStream.read(buf,nread,Math.min(buf.length - nread,remaining)))>0;remaining -= n){ nread += n; } if(nread > 0){ if(2147483639 - total < nread){ System.out.println("抛出异常"); } total += nread; if(result == null){ result = buf; }else { if(bufs == null){ bufs = new Ar
实验指导书 实验名称:包、接口与异常处理 学时安排:2 实验类别:综合设计型实验 实验要求:1人1组  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1、掌握java字符串处理方法。 2、掌握java面向对象的概念。 3、掌握java自定义异常和处理。 4、 通过实验,对Java程序的开发有一个深入了解。 二、实验内容 1.阅读并分析程序TestException.java。(见附件PPT文件) 2.设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整数, 输入的数据可能具有以下格式:12345、123 45、123xyz456 3.编写一个四则运算程序,要求用户输入一个x值和一个y值,以及一个四则运算符。如 果用户输入正确,则给出运算结果,如果输入错误,则给出出错警告。(利用异常处理 编程,尽量使用java现成的异常类,如没有可自定义异常类 ) 三、程序代码 1. public class TestException { public TestException() { } boolean testEx() throws Exception{ boolean ret = true; try{ ret = testEx1(); }catch (Exception e){ System.out.println("testEx, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx, finally; return value="+ret); return ret; } } boolean testEx1() throws Exception{ boolean ret = true; try{ ret = testEx2(); if (!ret){ return false; } System.out.println("testEx1, at the end of try"); return ret; }catch (Exception e){ System.out.println("testEx1, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx1, finally; return value="+ret); return ret; } } boolean testEx2() throws Exception{ boolean ret = true; try{ int b=12; int c; for (int i=2;i>=-2;i--){ c=b/i; System.out.println("i="+i); } return true; }catch (Exception e){ System.out.println("testEx2, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx2, finally; return value="+ret); return ret; } } public static void main(String[] args) { TestException testException1 = new TestException(); try{ testException1.testEx(); }catch(Exception e){ e.printStackTrace(); } } } 2. import java.util.*; public class test { public static void main(String args[]) { int i, number=0; String str; try { for(i=0;i<args.length;i++) { str=args[i]; number=Integer.parseInt(str); System.out.printf("第%d个字符转换为整数后:%d\n",i+1,number); } } catch(NumberFormatException e) { System.out.println("输入字符串不正确!"); } } } 3. import java.io.*; import java.util.*; public class ExceptionExam { void addition(double x,double y) //加法运算
java语言程序设计课后答案 作业参考答案 习题一 4、如何建立和运行Java程序, 首先启动文本编辑器,如记事本、UltraEdit等,编辑程序代码,并以.Java作为文件 扩展名保存程序源代码;然后进入dos环境利用javac编译源程序,生成扩展名为.class的 字节码文件;再利用命令java运行字节码文件,得到程序的运行结果。在集成开发环境J builder、Eclipse下,可以完成程序的编辑、编译、调试及运行等所有任务。 5、 public class LikeJava { public static void main(String [] args) { System.out.println("I Like Java Very much!"); } } 习题二 5、 (1) 45 (2) false (3) 14 (4) 14 (5),6 (6) true (7) 12 9、 public class Volume { public static void main(String [] args) { double r=0,v=0; r=double.parseDouble(args[0]); v=4*3.14159/3*r*r*r; System.out.println("球体积为:"+v); } } 习题三 8、 public class Factorials { public static void main(String args[]) { int i, j; long s=0, k; i=1; do //外循环开始 { k = 1; j=1; do{//内循环开始 k = k * j; //内循环体 j++; }while(j<=i);//内循环结束 System.out.println(i + "!=" + k); s = s + k; i++; }while(i<=20); //外循环结束 System.out.println("Total sum=" + s); } } 10、 public class Num { public static void main(String[]args) { int i,j,k,n; for (n=100;n<1000;n++) { i=n/100; j=(n-i*100)/10; k=n%10; if (i*i*i+j*j*j+k*k*k==n) System.out.print(n+" "); } } } 习题四 5、 import java.util.Scanner; class Factor{ long fac(int m) {if(m==0""m==1)return 1; else return m*fac(m-1); } public static void main(String [] args) {int i,n; long sum=0; String s=""; Scanner input=new Scanner(System.in); System.out.print("Please input n: "); n=input.nextInt(); Factor f=new Factor(); for(i=1;i<=n;i++) { System.out.println(f.fac(i)); sum=sum+f.fac(i); s=s+i+"!+"; } System.out.println(s.substring(0,s.length()-1)+"="+sum); } } 习题五 2、 import java.io.*; public class YangHuiOk { public static void main (String args[]) throws IOException { int max,a[][],i,j; char x; System.out.print("请输入杨辉三角要显示的行数: "); x=(char)System.in.read(); max = Integer.parseInt(String.valueOf(x)); a=new int[max][]; for (i=0;i<max;i++) { a[i]=new int[i+1]; } a[0][0]=1; for (i=1;i<max;i++) { a[i][0]=1; a[i][a[i].length-1]=1; for (j=1;j<a[i].length-1;j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<max;i++) { //for(j=0;j<=max-i;j++) System.out

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值