基本数据类型与引用数据类型String之间的转换及基本数据之间的转换

一、基本数据类型与引用数据类型String之间的转换

 1.int类型与String类型的相互转换

1.1将int类型转换成String类型:

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String st = Integer.toString(sc.nextInt());//方法一
		//String st = String.valueOf(sc.nextInt());//方法二
        //String st = ""+sc.nextInt();//方法三
        System.out.println(st);
    }
}

注:对于方法二: String st = String.valueOf();对于方法三:同会产生两个对象,变为两个String对象的相加,相应的st会增加一个长度,本质上与方法一相同(其他的任意基本数据类型都可通过方法二或三转换成String类型

速度:一>二>三

拓展:

在我们把一个基本数据类型和一个String类型相加的时候,编译器会将基本类型的值传入到对应封装类的toSting()方法中将其转化为和该基本类型值相同的String对象,从而和String进行相加运算。基本类型本身并不能直接与String类型相加。


 1.2 将String(int型的)类型转换为int类型

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);   
        //将String(int型的)类型转换为int类型
        int a = Integer.valueOf(sc.nextLine());//方法一
        //int a = Integer.parseInt(sc.nextLine());//方法二
        //int a = sc.nextInt() - '0';
        System.out.println(a);
	}

}

注:方法一: Integer.valueOf() 返回的是Integer类的对象,所以还要继续使用integer类中的拆箱方法intvalue()才行,即: int a = Integer.valueOf(sc.nextLine()).intValue(),此处未写是因为编译器能够自动将Integer类型转换成int类型;而方法二 :parseInt(String) 返回原始的int值。

方法三的原因见这里

(这三种方法都会默认将前导零去掉,eg:"001"(String)=>1(int))

速度:二>一>三

2.char类型与String类型的相互转换

2.1将char类型转换成String类型

除去1.1中的两种方法,还有方法三,直接调用用String类方法

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); 
		//char数组转换成String类型
		char[] ch = {'a','b','c'};
//		char[] ch = {'a'};//自动创建一个长度为一的对象数组
       //上面一个代码相当于下面两个步骤		
//		char [] ch = new char[1];
//		ch[0] = 'a';
		String sts = new String(ch);
		//只能将字符数组进行转换,不能转换单个字符
		//单个字符可以直接加进去,有两个String方法
		//String(String st);String(char[] chars)详细代码在编译器中按ctrl+鼠标左键查看
		//String sts = new String("a");
		System.out.println(sts);
		
	}
}

2.2将String类型转换成char类型

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); 
//		String类型转换成char数组
        String sts = sc.nextLine();
        char[] chars = sts.toCharArray();
        for(int i=0;i<chars.length;i++) {
        	System.out.println(chars[i]);
        }
        //如果要将string类型中的空格去除
//	    String[] str = sts.split("\\s+");//若想去掉其它符号改这里
//	    char[] chars = new char[sts.length()];
//	    int k=0;//标记chars的索引位置
//	    for(int i=0;i<str.length;i++) {
//	    	for(int j=0;j<str[i].length();j++) {
//	    		chars[k] = str[i].charAt(j);
//	    		System.out.println(chars[k]);
//	    		k++;
//	    	}
//	    }
//      将字符串中单个字符转成字符:使用String类中的方法charAt(index)
        
	}

}

………………

总结:

1.基本数据类型 => String类型     使用包装类方法和String类方法

1)任何基本数据类型既可以通过其包装类方法toString()转换为String类型;

String 变量 = 相应包装类.toString(基本数据类型);
//适用任何基本数据类型,char类型转换时,一次只能转换单个字符

  2)又可以通过String的valuOf()方法进行转换

String 变量 = String.valueOf(基本数据类型);
//真正适用任何基本数据类型,包括char类型,char数组类型

 2. String类型 => 基本数据类型 (char类型除外)  使用包装类方法

*String类型转换成char类型通过2.2中的方法进行转换 

1) String类型既可以通过各基本数据类型的包装类方法parse(),

基本数据类型 变量 = 包装类.parse基本数据类型(String);
//String类型不能通过这种方法转换为char类型

2)又可以通过其包装类方法valueOf()转换为各基本数据类型的包装类,然后通过intValue()方法拆箱为相应的基本数据类型

基本数据类型 变量 = 相应包装类.valueOf(String).基本数据类型Value();
//String类型不能通过这种方法转换为char类型
///byte、long类型的包装类没有拆箱方法

二、基本数据类型之间的转换

拓展:

强制类型转换,又叫造型。分为基本数据类型和引用数据类型两种情况。

1.自动类型转换(也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成)

1)转换前的数据类型与转换后的类型兼容。

2)转换后的数据类型的表示范围比转换前的类型大。

2.引用类型的强制类型转换

对于引用类型来说,什么是强制类型转换呢?简单地说,就是把父类型转换为子类型。因为子类型比父类型的内涵要丰富,无非就是属性更多功能更强,所以要把父类型转换为子类型,需要强制,所以叫强制类型转换。那么,是不是只要是父类型的变量就可以转换为子类型呢?事实上不是,这里是有条件限制的。

首先来看发生在什么情况下。我们用一个类型的构造方法构造出一个对象的时候,对象的类型已经确定了,就是这个类型,但是java允许我们可以不用这个类型的变量引用它,而使用它的父类类型,这时候情况就是我们用一个功能较弱的类型引用了一个功能较强的对象。然而有时候我们又希望这个对象完全发挥它的作用,就需要用一个它本身的类型的变量来引用它,因为原来那个父类的变量是不具备这些功能的,不能使用variablename.function()来使其发挥作用,所以还是用它自己的吧。问题是对象已经在内存中了,已经构造完了,你即使声明一个它本身类型的变量怎么指向它呢?答案是借助原来那个变量,就是它父类型的那个变量,让新的变量和原来的那个指向同一个对象。方式就是两者之间划等号。可是引用类型变量的相等需要两者类型相同,问题是不相同,怎么办?那就是把父类型的变量强制转换成子类型。看到这里有些人可能觉得写的太乱了,其实总结一下,就一句话,父子关系是能够强制类型转换的充分不必要条件
———————————————————————————————————————————

1.隐式转换 (自动转换)

转换规则:由JVM自动完成,且是由取值范围小的转换为取值范围更大的。

boolean类型不能与其他基本数据类型相互转换。

范围由小到大:(byte(占1个字节)、short(2)、char(2))—> int (4)—> long(8)—> float (4)—> double(8)  

注:byte、short、char相互之间不转换,他们参与运算首先转换为int类型。在表达式运算中,会自动将其它范围的基本数据类型转换成式子中最大范围的数据类型再进行运算

2.显示转换(强制类型转换)

转换规则:通过在想要转换的数据前添加数据类型,实现转换,是由范围大的转换为范围小的

语法格式:

范围小的数据类型 变量 = (范围小的数据类型)范围大的数据类型值;

注意:一般情况下不建议使用强转,因为强转有可能损失精度以及溢出的情况

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java中的String数据类型基本数据类型之间转换可以通过以下方法实现: 1. 将String转换为整型:使用Integer.parseInt()方法将String类型转换为int类型。 例如: ``` String str = "123"; int i = Integer.parseInt(str); ``` 2. 将String转换为浮点型:使用Double.parseDouble()方法将String类型转换为double类型。 例如: ``` String str = "3.14"; double d = Double.parseDouble(str); ``` 3. 将基本数据类型转换String:使用String.valueOf()方法将基本数据类型转换String类型。 例如: ``` int i = 123; String str = String.valueOf(i); ``` 4. 将字符串转换为字符数组:使用String.toCharArray()方法将字符串转换为字符数组。 例如: ``` String str = "Hello"; char[] charArray = str.toCharArray(); ``` 5. 将字符数组转换字符串:使用String.valueOf()或者new String()方法将字符数组转换字符串。 例如: ``` char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str1 = String.valueOf(charArray); String str2 = new String(charArray); ``` ### 回答2: Java中的String数据类型基本数据类型之间转换方法主要有以下几种: 1. 字符串转换基本数据类型:使用基本数据类型的包装类中提供的parseXxx()方法,其中Xxx表示相应的基本数据类型。例如,要将字符串str转换为整型,可以使用Integer.parseInt(str)方法。 2. 基本数据类型转换字符串:可以使用String类的valueOf()方法,该方法接受基本数据类型作为参数,然后将其转换为对应的字符串。例如,要将整型变量num转换字符串,可以使用String.valueOf(num)方法。 3. 基本数据类型转换字符串(方法二):可以使用基本数据类型对应的包装类的toString()方法,该方法可以将基本数据类型转换字符串。例如,要将整型变量num转换字符串,可以使用Integer.toString(num)方法。 4. 字符串转换基本数据类型(方法二):可以使用基本数据类型的valueOf()方法,该方法接受字符串作为参数,然后将其转换为对应的基本数据类型。例如,要将字符串str转换为整型,可以使用Integer.valueOf(str)方法。 需要注意的是,在进行字符串转换基本数据类型的操作时,如果字符串的格式不符合对应的基本数据类型的要求(例如字符串不能被解析为数字),会抛出NumberFormatException异常。因此,在进行此类转换时,需要在代码中进行异常处理或使用try-catch语句来捕获该异常。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识汲取者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值