Java和python的强制类型转换存在差异
数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。
① 隐式转换
I、定义:
在运算过程中,由于不同的数据类型会转换成同一种数据类型,所以整型、浮点型以及字符型都可以参与混合运算。自动转换的规则是从低级类型数据转换成高级类型数据。
II、转换规则:
数值型数据的转换:byte→short→int→long→float→double。
字符型转换为整型:char→int。
III、转换条件:
a.两种数据类型彼此兼容
b.目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)
② 显示转换(强制类型转换)
从存储范围大的类型到存储范围小的类型
注意:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。
题目提到s和t的长度都在100000内,但是提交出现超出范围的数据,按照题目意思,下面的代码应该是可以通过的,并不会越界。
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve (String s, String t) { // write code here Long m=Long.valueOf(s); Long n=Long.valueOf(t); Long a=m+n; String c=a.toString(); return c; } }但是题目的考点不在于类型转换的使用,最好在面试中不要直接使用,题目的考点在于模拟,模拟加法的运算过程,贴一下代码:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve (String s, String t) { // write code here int i=s.length()-1,j=t.length()-1,carry=0; StringBuilder sb=new StringBuilder(); while(i>=0||j>=0||carry>0){//carry表示进位数 不能等于0 int a=i>=0?s.charAt(i)-'0':0; int b=j>=0?t.charAt(j)-'0':0; int sum=a+b+carry; carry =sum/10;//进位数 sb.append(sum%10);//取余数放在末尾 i--; j--; } return sb.reverse().toString();//记得反转后转成String对象 } }