实验2转义字符类型转换运算符Word文件下载.docx
《实验2转义字符类型转换运算符Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验2转义字符类型转换运算符Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
以0(零)开头,如:
012;
十六进指表示形式:
以0x开头,如:
0xa1;
整数默认int型,长整数可在后面加L;
实数默认双精度型,要明确表示为float型在数据后加F。
布尔型数据只有true和false两个值;
字符型数据是用单引号括起来。
2.2.2
特殊字符—转义符
Java字符采用Unicode编码。
“\”(反斜杠)在字符表示或字符串中有特殊作用,它和之后的字符合并解释,用于表示一些特殊字符。
见表2-2。
表2-2常见转义符
转义字符
描述
\’
单引号字符
\"
双引号字符
\\
反斜杠
\r
回车
\n
换行
\f
走纸换页
\t
横向跳格
\b
退格
2.2.3自动类型转换与强制类型转换
(1)自动转换次序
byte-->
short→char→int→long→float→double
按照箭头所示方向,处于左边的数据类型的数据可以自动转换赋值给右边的数据类型的变量,但反之,将处于右边的数据类型的数据赋值给处于左边的数据类型的变量必须经过强制转换。
(2)布尔类型不能与其他类型进行转换;
(3)赋值时强制转换可能导致数据丢失精度。
2.2.4输出语句的使用
(1)print()方法与println()的差异是前者输出后不换行,而后者换行。
(2)输出时可以通过“+”号将任何数据与字符串拼接。
如果拼接的是基本类型变量,则在其位置输出变量值,如果是对象,则在其位置输出对象的toString()方法的返回结果。
2.2.5容易用错的运算符
(1)++或--的位置相关性。
不妨假设原来a值为4,则使用++或--运算符后的结果如表2-3所示。
表2-3++和—运算符的位置相关性
使用形式
原来a值
运算后a值
表达式的值
a++
5
++a
a--
3
--a
(2)赋值运算(=)与相等比较(==)的差异
赋值语句形式:
变量名=表达式;
功能:
计算表达式的结果,并将结果给变量赋值,变量的结果也为赋值表达式的结果。
“==”是关系运算符,是比较运算符两边的数据是否相等。
表达式的结果为true或false。
(3)求余(%)与除号(/)的使用
注意两个整数进行除法运算是整除,结果将不包含小数部分,而一个是整数、另一个为实数,则转化为实数后再计算,结果为实数。
具体样例见表2-4。
表2-4求余与除号运算符
运算
结果
说明
7/5
整除的商
7%5
求整除后的余数
7.0/5.0
1.4
实数除
7.0/5
转化为实数运算
7/5.0
7.0
%5.0
2.0
求余数
(4)逻辑与(&
&
)与逻辑或(||)的使用,尤其是副作用。
逻辑运算符有可能不必计算运算符两边的表达式即可确定结果,其副作用见表2-5。
表2-5逻辑运算符的附加特点
表达式
何时结果为true
附加特点
op1&
op2
op1和op2都是true
op1为false时,不计算op2
op1||op2
op1或op2是true
op1为true时,不计算op2
(5)位运算符的使用
移位运算符左移1位将数值增大1,右移则缩小1倍;
按位逻辑运算相当于每位的1对应true,0对应false的逻辑运算,将各位的运算结果拼接后的数据即为结果。
各类位运算符的具体功能见表2-6。
表2-6各类位运算符的功能
运算符
用法
操作
~
~op
结果是op按比特位求反
>
Op1>
将op1右移op2个位(带符号)
<
Op1<
将op1左移op2个位(带符号)
op1>
将op1右移op2个位(不带符号的右移)
Op1&
op1和op2都是1时,相应的位才是1
|
Op1|op2
op1或op2是1时,相应的位为1
^
Op1^op2
op1和op2是不同值时,相应的位为1
(6)运算符的优先级
在一个表达式中运算的优先次序由相邻运算符的优先级决定,同一级运算符的运算次序根据运算符的结合性决定运算次序。
如果是左结合则按自左向右的次序进行。
2.3样例分析
样例1:
调试分析以下程序的运行结果:
publicclasstest{
publicstaticvoidmain(Stringa[]){
intm=0;
System.out.println("
m++="
+m++);
++m="
+(++m));
booleanx;
x=(5>
3)&
(4==6);
x="
+x);
m=m%2;
System.out.println("
result="
+m+1);
inty=m*m+2*m-1;
m="
+m+"
y="
+y);
}
【输出结果】
m++=0
++m=2
x=false
result=01
m=0,y=-1
【说明】
(1)注意m++和++m的求值差异;
(2)注意输出语句中与字符串的拼接运算次序。
字符串“result”先与m的值拼接,然后再与1拼接。
样例2:
已知梯形的上底为3,下底为5,高为2.4,求其面积。
【参考程序1】
publicclassArea{
publicstaticvoidmain(Stringa[]){
doublex=3;
//上底
doubley=5;
//下底
doublez=2.4;
//高
doubles=(x+y)*z/2;
//计算面积
面积="
+s);
}
}
【参考程序2】
doubles=(3+5)*2.4/2;
【说明】计算机编程解法可以是多样的,只要能实现目标即可。
但要注意程序的可读性,对引入的变量通常要加以注释。
2.4上机练习
✧
基本题
1)编程观察如下输出语句:
hellotestescapechar"
);
在“escape”处换上各种转义字符测试输出效果。
如何实现如下输出:
Hello"
test"
Hello‘\test’
2)设有如下代码段,考虑赋值转换问题:
inta=234;
byteb=a;
a="
+a+"
b="
+b);
将a,b的类型以及数据进行各种替换,观察什么时候能赋值,什么时候需要使用强制转换,什么时候不能强制转换,什么时候强制转换会丢失数据。
3)编写一个程序求半径R为10的圆的面积。
公式为:
S=πR2
注:
π可用Math类的常量PI表示(即Math.PI)。
提高题
1)设有一个边长为30的等边三角形,三角形内有一个内切圆,计算除内切圆外三角形内其它部分的面积。
【提示】先算三角形面积,再计算圆的面积,其差即为结果。
2)调试分析以下程序的运行结果:
publicclasstest{
intm=10,n=517;
System.out.println(n%m);
System.out.println(n/m);
System.out.println(m>
2);
System.out.println(m&
n);
System.out.println(Integer.toBinaryString(m));
System.out.println(Integer.toBinaryString(m>
2));
注意:
Integer.toBinaryString(int)用于将一个整数转化为二进制形式的数字串。
在进行位运算时,注意观察二进制的数据变化规律。
2.5思考题
1)
现有一个int类型的整数和一个double类型的数进行加法运算,则得到的结果类型为:
A.int类型
B.double类型
C.float类型
D.long类型
2)下面程序段的输出结果是:
int
a=2;
System.out.print(a++);
System.out.print(a);
System.out.print(++a);
A.333
B.334
C.234
D.233
3)以下代码的输出结果?
publicclassTest{
intx=3;
publicstaticvoidmain(Stringargv[]){
intx=012;
System.out.println(x);
A.12
B.012
C.10
D.3
4)下列定义语句正确的是:
A.charc="
\n"
;
B.inti=12;
C.floatf=2.8;
D.booleanb=null;
5)检查如下代码:
publicclassQuiz2_l{
publicstaticvoidmain(String[]args)
{
inta=8;
intb=-8;
System.out.print(a<
2);
System.out.print("
,"
+(b>
1));
}化为二进制进行移位,再化为十进制
下列哪条语句正确描述了程序在编译和运行时的行为?
A.编译成功,输出为“32,-4”
B.编译成功,输出为“16,4”
C.编译成功,输出为“32,2147483644”
D.编译成功,输出为“16,2147483644”
E.编泽器拒绝表达式b>
,因为不能对一个负数应用>
操作符
6)以下代码中变量result的可能类型有哪些?
byte
b=11;
short
s=13;
result=b*++s;
A.byte,short,int,long,float,double
B.boolean,byte,short,char,int,long,float,double
C.byte,short,char,int,long,float,double
D.byte,short,char
E.int,long,float,double
7)以下代码的输出结果为:
"
+2+3);
System.out.println(2+3);
System.out.println(2+3+"
"
System.out.println(2+"
+3);
A.第3行出现编译错误
B.输出23,5,5和23.
C.输出5,5,5和23.
D.输出23,5,23和23.
8)设有如下变量说明:
bytemyByte;
intmyInt;
longmyLong;
charmyChar;
floatmyFloat;
doublemyDouble;
以下赋值语句哪个需要强制转换。
A.myInt=myByte;
B.myInt=myLong;
C.myByte=3;
自动转换:
D.myInt=myChar;
byte→short→char→int→long→float→double
E.myFloat=myDouble;
F.myFloat=3;
G.myDouble=3.0;
9)考虑如下两语句:
1.booleanpassingScore=false&
grade==70;
前面错了,后面的就不算了
2.booleanpassingScore=false&
无论前面对错,两者都要算
表达式grade==70在什么地方被计算
A.在1和2中均计算
B.在1和2中均未计算
C.在1中计算,在2中未计算
D.在2中计算,在1中未计算
E.非法,因为false应写FALSE
10)设有一个整数x其二进制值为10011100(用1字节表示),则执行如下语句后z的二进制值为:
inty=1<
7;
化为二进制进行移位,再化为十进制,再赋值给y
intz=x&
y;
A.10000001 B.10000000 C.00000001
D.10011101 E.10011100
11)以下哪些编译正确?
A.shortmyshort=99S;
B.Stringname='
ExcellenttutorialMrGreen'
C.charc=17c;
D.intz=015;
12)以下哪些是java关键字?
A.double B.Switch C.then D.instanceof
13)以下程序行的输出结果为?
System.out.println(010|4);
010是八进制数,化为十进制是8,再化为二进制是1000,4化为二进制是100,两者由“|”按位取或,得1100,化为十进制是12
A.14
B.0
C.6
D.12
14)设有如下变量
charc='
c'
inti=10;
doubled=10;
longl=1;
Strings="
Hello"
以下哪些语句编译不出错?
byte→short→char→int→long→float→double
A.c=c+i;
B.s+=i;
C.i+=s;
D.c+=s;
15)整型变量a,b的值定义如下:
inta=3;
intb=4;
则表达式++a==b的值为:
A.4
B.false
C.3
D.true
16)执行下列代码后输出结果为:
publicclasstest{
publicstaticvoidmain(String
args[]){
inta=2;
intb=3;
intc=7;
intd=a>
c?
a:
c;
d=d>
2>
b?
d:
b;
System.out.println(b);
A.2
B.3
C.5
D.7