6、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案

先说一下Java的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换。

赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。

第一题:short s1 = 1; s1 = s1 + 1;

错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);

第二题:short s1 = 1; s1 += 1;

正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

第三题:short s1=1,s2=1;short s3=s1+s2;

错误!这里是编译器从数据安全方面考虑,如果s1和s2都是较大的short类型数,可能会导致溢出,所以会要求强制转换到int。正确写法:short s3 = (int)s1 + s2;

原文地址:https://www.cnblogs.com/helenwq/p/11647569.html

时间: 2024-07-29 22:10:39

6、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案的相关文章

C 在一个字串s1中查找一子串s2,若存在则返回s1中s2的个数和位置

在一个字串s1中查找一子串s2,若存在则返回s1中s2出现次数和位置 #include<stdio.h> #include<string.h> void main() { char s1[100],s2[10]; int i,j,k,len1,len2,b[10]; gets(s1); gets(s2); len1=strlen(s1); len2=strlen(s2); for(i=0,k=0;i<len1;i++) { for(j=0;j<len2;j++) if(

short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确

这个问题以前碰到过,也研究过,发表一下:    如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确.这两个表达式都被称为赋值表达式.第二个表达式使用的是简单赋值操作符(=),而第一个表达式使用的是复合赋值操作符.Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),其中T是E1的类型,除非E1只被计算一次.    换句话说,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型.如果结果的类型与该

一份不太简短的LaTeX教程 lshort – A short in&#173;tro&#173;duc&#173;tion to LATEX 2elshort – A short in&#173;tro&#173;duc&#173;tion to LATEX 2e

Lshort started as a trans­la­tion and ra­tio­nal­i­sa­tion of a ground-break­ing Ger­man-lan­guage in­tro­duc­tion to LATEX. It has since taken on a mo­men­tum of its own, and has it­self been trans­lated into a num­ber of lan­guages. Thus we have in

经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)

题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., "waterbottle" is a rotation of &qu

ACPI电源管理中的S0 S1 S2 S3 S4 S5

电源选项中S0,S1,S2,S3,S4,S5的含义以 ACPI 的规格来说吧!ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口.这种新的能源管理可以通过诸如软件控制'开关'系统,亦可以用Modem信号唤醒和关闭系统. ACPI在运行中有以下几种模式: S0 正常. S1 CPU停止工作.唤醒时间:0秒. S2 CPU关闭.唤醒时间:0.1秒. S3 除了内存外的部件都停止工作.唤醒时间:0.5秒. S4 内存信息写入硬盘,所有

返回指定字符串位置的函数FIELD(S,S1,S2,...) 与 FIND_IN_SET(S1,S2) 函数

FIELD(S,S1,S2,...)  与 FIND_IN_SET(S,S1) 函数  ------> 这2个函数都是返回指定字符串在源串中的出现的位置(皆是第一次出现的位置),但2个函数的参数不一样,前者是以列表形式的参数,后者是整体为一个整串的参数.(上边S皆为指定串,前者S1和S2为串列表,后者S1为一个整串) FIELD(S,S1,S2,...) : 返回指定字符串位置的函数FIELD(S,S1,S2,...) FIELD(S,S1,S2,...)返回字符串s在列表s1,s2,.....

判断字符串s2能否由s1旋转得到

/* * 判断s2能否由s1旋转得到 * 已知isSunString函数,但只能调用一次 * 思路:s1=xy; s2=yx;令s1=s1+s1=xyxy;则s2必为s1的子串 */ import java.util.Scanner; public class RotateString { static boolean isSubString(String s1,String s2){ //也可以用KMP来判断,暂时写不出来额 for(int i=0;i<s1.length()/2;i++){

对于char *s1 和 char s2[] 的认识

对于char *s1 和 char s2[] 认识有误区(认为无区别),导致有时出现“难以理解”的错误. char *s1 = "hello"; char s2[] = "hello"; [区别所在] char *s1 的s1,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错. char s2[]的s2 是数组对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改

判断s2是否能够被通过s1做循环移位(rotate)得到的字符串是否包含

问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含.例如,S1=AABCD和s2=CDAA,返回true:给定s1=ABCD和s2=ACBD,返回false. 看到 这里的一个思路 字符串移位包含的问题(编程之美) 引用原文 “   解法二:我们也可以对循环移位之后的结果进行分析. 以S1 = ABCD为例,先分析对S1进行循环移位之后的结果,如下所示: ABCD--->BCDA---->CDAB---->DABC---->AB