JAVA中int、String的类型转换

 

int -> String

int i=12345;
String s="";
第一种方法:s=i+"";
第二种方法:s=String.valueOf(i);
这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?

String -> int

s="12345";
int i;
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();
这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?

以下是答案:

第一种方法:s=i+"";   //会产生两个String对象
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象

第一种方法:i=Integer.parseInt(s);//直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象

--------------------------------------------------------------------
1如何将字串 String 转换成整数 int?

A. 有两个方法:

1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);

2). int i = Integer.valueOf(my_str).intValue();

注: 字串转成 Double, Float, Long 的方法大同小异.
2 如何将整数 int 转换成字串 String ?
A. 有叁种方法:

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = "" + i;

注: Double, Float, Long 转成字串的方法大同小异.



JAVA数据类型转换 

这是一个例子,说的是JAVA中数据数型的转换.供大家学习

package shenmixiaozhu;
import java.sql.Date;
public class TypeChange {
   public TypeChange() {
   }
   //change the string type to the int type
   public static   int stringToInt(String intstr)
   {
     Integer integer;
     integer = Integer.valueOf(intstr);
     return integer.intValue();
   }
   //change int type to the string type
   public static String intToString(int value)
   {
     Integer integer = new Integer(value);
     return integer.toString();
   }
   //change the string type to the float type
   public static   float stringToFloat(String floatstr)
   {
     Float floatee;
     floatee = Float.valueOf(floatstr);
     return floatee.floatValue();
   }
   //change the float type to the string type
   public static String floatToString(float value)
   {
     Float floatee = new Float(value);
     return floatee.toString();
   }
   //change the string type to the sqlDate type
   public static java.sql.Date stringToDate(String dateStr)
   {
     return   java.sql.Date.valueOf(dateStr);
   }
   //change the sqlDate type to the string type
   public static String dateToString(java.sql.Date datee)
   {
     return datee.toString();
   }

   public static void main(String[] args)
   {
     java.sql.Date day ;
     day = TypeChange.stringToDate("2003-11-3");
     String strday = TypeChange.dateToString(day);
     System.out.println(strday);
   }
}
JAVA中常用数据类型转换函数
虽然都能在JAVA API中找到,整理一下做个备份。


最近遇到判断数字的问题,简单总结了一下和大家分享~

 

//1、正则表达式
 public static boolean isNumeric1(String str){
  Pattern pattern = Pattern.compile("[0-9]*");
  return pattern.matcher(str).matches();
 }
 //2、java自带函数
 public static boolean isNumeric2(String str){
  for (int i = str.length();--i>=0;){
   if (!Character.isDigit(str.charAt(i))){
    return false;
   }
  }
  return true;
 }
 //3、正则表达式
 public static boolean isNumeric(String str){
  if(str.matches("\\d *")){
   return true;
  }else{
   return false;
  }
 }
    //4、判断ASCII码值
 public static boolean isNumeric0(String str){
  for(int i=str.length();--i>=0;){
   int chr=str.charAt(i);
   if(chr<48 || chr>57)
    return false;
  }
  return true;
 }
    //5、逐个判断str中的字符是否是0-9
 public static boolean isNumeric3(String str){
  final String number = "0123456789";
  for(int i = 0;i 
            if(number.indexOf(str.charAt(i)) == -1){  
             return false;  
            
   
  return true;
 }
    //6、捕获NumberFormatException异常
 public static boolean isNumeric00(String str){
  try{
   Integer.parseInt(str);
   return true;
  }catch(NumberFormatException e){
   System.out.println("异常:\"" + str + "\"不是数字/整数...");
   return false;
  }
 }
 
 ps:不提倡使用方法6,原因如下:
    1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。  
    2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。 
 看一下JDK源码:
 public static long parseLong(String s,int radix)  
         throws NumberFormatException  
  
    if(s == null){  
       throw   new   NumberFormatException("null");  
    
    if(radix < Character.MIN_RADIX){  
           throw new NumberFormatException("radix " + radix +
           " less than Character.MIN_RADIX");  
    
    if(radix > Character.MAX_RADIX){  
           throw new NumberFormatException("radix " + radix +
           " greater than Character.MAX_RADIX");  
    
    long result = 0;  
    boolean negative = false;
    int i = 0,max = s.length();  
    long limit;  
    long multmin;  
    int digit;
    if(max > 0){  
     if(s.charAt(0) == '-'){  
      negative = true;  
      limit = Long.MIN_VALUE;
      i++;
     }else{
      limit = -Long.MAX_VALUE;
     
     multmin = limit / radix;
     if(i < max){  
      digit = Character.digit(s.charAt(i++),radix);  
      if(digit < 0){
            throw new NumberFormatException(s);  
      }else{  
            result = -digit;
      
     
     while(i < max){  
      // Accumulating negatively avoids surprises near MAX_VALUE
      digit = Character.digit(s.charAt(i++),radix);  
      if(digit < 0){  
       throw new NumberFormatException(s);  
      
      if(result < multmin){  
       throw new NumberFormatException(s);  
      
      result *= radix;  
      if(result < limit + digit){  
       throw new NumberFormatException(s);  
      
      result -= digit;  
    
    }else{  
     throw   new   NumberFormatException(s);  
    
    if(negative){  
     if(i > 1){  
      return result;
     }else{  
      throw new NumberFormatException(s);  
     
    }else{  
     return   -result;  
    
  
 可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常... 


 未完,待大家一起续~~~欢迎大家共享好的方法~~~

最近遇到判断数字的问题,简单总结了一下和大家分享~

 

//1、正则表达式
 public static boolean isNumeric1(String str){
  Pattern pattern = Pattern.compile("[0-9]*");
  return pattern.matcher(str).matches();
 }
 //2、java自带函数
 public static boolean isNumeric2(String str){
  for (int i = str.length();--i>=0;){
   if (!Character.isDigit(str.charAt(i))){
    return false;
   }
  }
  return true;
 }
 //3、正则表达式
 public static boolean isNumeric(String str){
  if(str.matches("\\d *")){
   return true;
  }else{
   return false;
  }
 }
    //4、判断ASCII码值
 public static boolean isNumeric0(String str){
  for(int i=str.length();--i>=0;){
   int chr=str.charAt(i);
   if(chr<48 || chr>57)
    return false;
  }
  return true;
 }
    //5、逐个判断str中的字符是否是0-9
 public static boolean isNumeric3(String str){
  final String number = "0123456789";
  for(int i = 0;i 
            if(number.indexOf(str.charAt(i)) == -1){  
             return false;  
            
   
  return true;
 }
    //6、捕获NumberFormatException异常
 public static boolean isNumeric00(String str){
  try{
   Integer.parseInt(str);
   return true;
  }catch(NumberFormatException e){
   System.out.println("异常:\"" + str + "\"不是数字/整数...");
   return false;
  }
 }
 
 ps:不提倡使用方法6,原因如下:
    1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。  
    2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。 
 看一下JDK源码:
 public static long parseLong(String s,int radix)  
         throws NumberFormatException  
  
    if(s == null){  
       throw   new   NumberFormatException("null");  
    
    if(radix < Character.MIN_RADIX){  
           throw new NumberFormatException("radix " + radix +
           " less than Character.MIN_RADIX");  
    
    if(radix > Character.MAX_RADIX){  
           throw new NumberFormatException("radix " + radix +
           " greater than Character.MAX_RADIX");  
    
    long result = 0;  
    boolean negative = false;
    int i = 0,max = s.length();  
    long limit;  
    long multmin;  
    int digit;
    if(max > 0){  
     if(s.charAt(0) == '-'){  
      negative = true;  
      limit = Long.MIN_VALUE;
      i++;
     }else{
      limit = -Long.MAX_VALUE;
     
     multmin = limit / radix;
     if(i < max){  
      digit = Character.digit(s.charAt(i++),radix);  
      if(digit < 0){
            throw new NumberFormatException(s);  
      }else{  
            result = -digit;
      
     
     while(i < max){  
      // Accumulating negatively avoids surprises near MAX_VALUE
      digit = Character.digit(s.charAt(i++),radix);  
      if(digit < 0){  
       throw new NumberFormatException(s);  
      
      if(result < multmin){  
       throw new NumberFormatException(s);  
      
      result *= radix;  
      if(result < limit + digit){  
       throw new NumberFormatException(s);  
      
      result -= digit;  
    
    }else{  
     throw   new   NumberFormatException(s);  
    
    if(negative){  
     if(i > 1){  
      return result;
     }else{  
      throw new NumberFormatException(s);  
     
    }else{  
     return   -result;  
    
  
 可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常...


posted @ 2014-10-31 13:59  Wishmeluck  阅读(180)  评论(0编辑  收藏  举报