实验2-转义字符、类型转换、运算符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 Java符号与表达式
2.1 实验目的
(1)熟悉基本数据类型及其占用空间大小,熟悉标识符的定义特点;
(2)熟悉常见转义字符的含义;
(3)掌握不同类型数据的赋值转换原则,熟悉自动转换与强制转换的含义;
(4)掌握常用运算符的使用。
2.2 知识要点
2.2.1 基本数据类型、变量
(1)标识符的命名原则:以字母,下划线(_),美元符($)开始的一个字符序列,后面可以跟字母,下划线,美元符,数字。
(2)基本数据类型(见表2-1)
表2-1 基本数据类型
●八进制表示形式:以0(零)开头,如:012;
●十六进指表示形式:以0x开头,如:0xa1;
●整数默认int型,长整数可在后面加L;
●实数默认双精度型,要明确表示为float型在数据后加F。
●布尔型数据只有true和false两个值;
●字符型数据是用单引号括起来。
2.2.2 特殊字符—转义符
Java字符采用Unicode编码。“\”(反斜杠)在字符表示或字符串中有特殊作用,它和之后的字符合并解释,用于表示一些特殊字符。见表2-2。
表2-2 常见转义符
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 ++和—运算符的位置相关性
(2)赋值运算(=)与相等比较(==)的差异
赋值语句形式:变量名=表达式;
功能:计算表达式的结果,并将结果给变量赋值,变量的结果也为赋值表达式的结果。
“==”是关系运算符,是比较运算符两边的数据是否相等。表达式的结果为true或false。
(3)求余(%)与除号(/)的使用
注意两个整数进行除法运算是整除,结果将不包含小数部分,而一个是整数、另一个为实数,则转化为实数后再计算,结果为实数。具体样例见表2-4。
表2-4 求余与除号运算符
(4)逻辑与(&&)与逻辑或(||)的使用,尤其是副作用。
逻辑运算符有可能不必计算运算符两边的表达式即可确定结果,其副作用见表2-5。
表2-5 逻辑运算符的附加特点
(5)位运算符的使用
移位运算符左移1位将数值增大1,右移则缩小1倍;按位逻辑运算相当于每位的1对应true,0对应false的逻辑运算,将各位的运算结果拼接后的数据即为结果。各类位运算符的具体功能见表2-6。
表2-6 各类位运算符的功能
(6)运算符的优先级
在一个表达式中运算的优先次序由相邻运算符的优先级决定,同一级运算符的运算次序根据运算符的结合性决定运算次序。如果是左结合则按自左向右的次序进行。
2.3 样例分析
样例1:调试分析以下程序的运行结果:
public class test {
public static void main(String a[]) {
int m=0;
System.out.println("m++="+m++);
System.out.println("++m="+(++m));
boolean x;
x=(5>3)&&(4==6);
System.out.println("x="+x);
m=m%2;
System.out.println("result="+m+1);
int y=m*m+2*m-1;
System.out.println("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】
public class Area {
public static void main(String a[]){
double x=3; // 上底
double y=5; // 下底
double z=2.4; // 高
double s=(x+y)*z/2; //计算面积
System.out.println("面积="+s);
}
}
【参考程序2】
public class Area {
public static void main(String a[]){
double s=(3+5)*2.4/2; //计算面积
System.out.println("面积="+s);
}
}
【说明】计算机编程解法可以是多样的,只要能实现目标即可。但要注意程序的可读性,对引入的变量通常要加以注释。
2.4 上机练习
✧基本题
1)编程观察如下输出语句:
System.out.println("hello test escape char");
在“escape”处换上各种转义字符测试输出效果。如何实现如下输出:
Hello "test"
Hello ‘\test’
2)设有如下代码段,考虑赋值转换问题:
int a=234;
byte b=a;
System.out.println("a="+a+",b="+b);
将a,b的类型以及数据进行各种替换,观察什么时候能赋值,什么时候需要使用强制转换,什么时候不能强制转换,什么时候强制转换会丢失数据。
3) 编写一个程序求半径R为10的圆的面积。公式为:S=πR2
注:π可用Math类的常量PI表示(即Math.PI)。
✧提高题
1)设有一个边长为30的等边三角形,三角形内有一个内切圆,计算除内切圆外三角形内其它部分的面积。
【提示】先算三角形面积,再计算圆的面积,其差即为结果。