第2章-Java编程基础-补充案例文档格式.doc
《第2章-Java编程基础-补充案例文档格式.doc》由会员分享,可在线阅读,更多相关《第2章-Java编程基础-补充案例文档格式.doc(35页珍藏版)》请在冰点文库上搜索。
;
//重新赋值,Java中的字符采用的编码是Unicode编码。
占用2个字节。
c='
中'
System.out.println(c);
//定义布尔类型
booleanflag=true;
System.out.println(flag);
}
}
运行结果如图2-1所示。
图2-1运行结果
三、案例总结
1、Java对变量的数据类型有严格的限定。
在定义变量时必须声明变量的类型,并且变量值的类型和变量类型必须一致,否则程序会报错。
2、byte类型的变量存储的值必须是-27~27-1之间的整数。
赋值的时候,尽量不要超出范围,如果超出可能损失精度。
3、定义变量的方式有两种,具体如下:
方式一:
数据类型变量名=初始化值;
方式二:
数据类型变量名;
变量名=初始化值;
案例2-2变量的自动类型转换
00102006
变量的类型转换
了解变量进行自动类型转换的条件
变量的自动类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。
为了明确哪些数据类型可以实现自动转换,本案例演示的是将一种数据类型的值赋给另外一种数据类型变量的情形。
1)编写一个类Example02。
2)在类Example02中,定义byte类型的变量a,int类型的变量b,float类型的变量f,double类型的变量d,其中,变量a的初始值为10,变量f的初始值为12.5f。
3)将变量a的值赋给变量b,变量a、b、f相加后的结果值赋给变量d。
4)使用println语句打印出变量b和变量d的值。
定义Example02类,其代码如下:
classExample02
{
publicstaticvoidmain(String[]args)
{
//隐式转换
bytea=10;
intb=a;
floatf=12.5F;
System.out.println(b);
doubled=a+b+f;
运行结果如图2-2所示。
图2-2运行结果
1、要实现自动类型转换,必须同时满足两个条件,第一是两种数据类型彼此兼容,第二是目标类型的取值范围大于源类型的取值范围。
2、列出三种可以进行自动类型转换的情况,具体如下:
(1)整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量,short、char类型的数据可以赋值给int、long类型的变量,int类型的数据可以赋值给long类型的变量。
(2)整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。
(3)其它类型转换为double类型,如byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。
案例2-3变量的强制类型转换
掌握不同数据类型间的强制类型转换
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。
例如,两种类型彼此不兼容,或者目标类型取值范围小于源类型,都需要进行强制类型转换。
为了明确两种不同类型的变量如何进行强制类型转换,本案例以int和byte类型为例,演示如何将int类型的变量强转为byte类型。
1)编写一个类Example03
2)在Example03中的main()方法中定义一个int类型的变量i和byte类型的变量b,并将变量i的值赋给变量b
3)使用println语句打印出变量b的值
定义Example03类,其代码如下:
classExample03
inti=10;
byteb=(byte)i;
运行结果如图2-3所示。
图2-3运行结果
1、强制类型转换,具体格式如下:
目标类型变量=(目标类型)值
2、在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。
int在内存中占用4个字节。
byte类型的数据在内存中占用1个字节,当将变量i的数据在内存中占的内存大于1个字节时,前面3个高位字节的数据会丢失,数值也会发生改变。
案例2-4变量的作用域
编号:
00102007
名称:
变量的作用域
了解变量的作用域
在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。
为了让初学者熟悉变量的作用域,本案例将在三层的大括号内分别定义三个变量x、y、z,用输出语句输出变量的值,观察变量的作用域。
1)编写一个类Example04
2)在main方法下定义变量x,并在每一层大括号内都使用一次x,观察x的作用域
3)在第一层括号内定义变量y,并在第二层括号内使用y,观察y的作用域
4)在第二层括号内定义z,并在第一层括号内使用z,观察z的作用域
(1)定义Example04类,具体代码如下所示:
publicclassExample04{
publicstaticvoidmain(String[]args){
intx=12;
{
inty=96;
{
intz=0;
y=x;
}
System.out.println("
xis"
+x);
yis"
+y);
z=x;
System.out.println("
zis"
+z);
}
System.out.println("
}
运行结果如图2-4所示。
图2-4运行结果
(3)对上述代码进行修改,修改后的代码如下所示:
System.out.println("
运行结果如图2-5所示。
图2-5运行结果
1、第一次程序编译错误是因为程序在变量z的作用域外进行访问,所以程序找不到变量z。
如果在变量z的作用域内访问z,程序就会编译成功。
2、x定义在main方法下,所有main方法下的任何位置都能够使用变量x。
3、y定义在第一层括号下,因为第二层括号在第一层括号内,所以在第二层括号内使用变量y也不会报错。
案例2-5算术运算符
00102008
算术运算符
了解算术运算符的用法
在程序中,经常会使用算术运算符进行四则运算,为了让初学者熟悉算术运算符的用法,本案例将以++、--、\等运算符为例,讲解不同算术运算符的作用。
1)编写一个类Example05
2)在main方法下定义变量a,并赋值为2,定义变量b,并赋值为4;
3)首先运算表达式++a+b++,并把计算结果赋给变量x,然后将b/a的值赋给变量y;
4)输出变量a、b、x和y的值
publicclassExample05{
publicstaticvoidmain(String[]args){
inta=2;
intb=4;
intx=++a+b--;
inty=b/a;
System.out.println("
a="
+a);
b="
+b);
x="
运行结果如图2-6所示。
图2-6运行结果
1、在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其它运算。
反之,如果运算符放在操作数的后面则是先进行其它运算再进行自增或自减运算。
2、在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。
如果除法运算有小数参与,得到的结果会是一个小数。
案例2-6赋值运算符
5、考核知识点
00102009
赋值运算符
6、练习目标
了解赋值运算符的用法
7、需求分析
在程序中,经常会使用赋值运算符,它的作用就是将常量、变量或表达式的值赋给某一个变量。
为了让初学者熟悉赋值运算符的用法,本案例将以+=运算符为例,讲解赋值运算符的作用。
8、设计思路(实现原理)
1)编写一个类Example06
2)在main方法下定义变量s,并赋值为5,定义变量i,并赋值为12;
3)使用赋值运算符计算s+=i++的值,并把计算结果赋给变量s
4)输出变量s的值
publicclassExample06{
publicstaticvoidmain(String[]args){
shorts=5;
inti=12;
s+=i++;
System.out.println("
s="
+s);
运行结果如图2-7所示。
图2-7运行结果
1、在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。
2、在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
inta,b,c,d;
a=b=c=d=5;
//为四个变量同时赋值
案例2-7比较运算符
00102010
比较运算符
了解比较运算符的用法
在程序中,经常会使用比较运算符对两个变量或值进行比较,使用比较运算符的比较结果是一个布尔类型的值。
为了让初学者熟悉比较运算符的用法,本案例将以==、>
=、<
=、!
=比较运算符为例,讲解比较运算符的用法。
1)编写一个类Example07
2)在main方法下定义变量x、y,并依此赋值为0、1;
3)使用==运算符比较字符'
==97,输出运算结果;
4)使用>
=运算符比较'
>
=100,输出运算结果;
5)使用<
=运算符比较x<
=y,输出运算结果;
6)使用!
=运算符比较x!
publicclassExample07{
intx=0;
//定义变量x,初始值为0
inty=1;
//定义变量y,初始值为0
System.out.println('
==97);
//判断字符a是否等于97
=100);
//判断字符a是否大于100
System.out.println(x<
=y);
//判断x是否小于等于y
System.out.println(x!
//判断x是不是不等于y
运行结果如图2-8所示。
图2-8运行结果
1、使用比较运算符计算的表达式,返回的结果是一个布尔类型的值
2、不能将比较运算符“==”误写成赋值运算符“=”。
案例2-8逻辑运算符
00102011
逻辑运算符
了解逻辑运算符的运算规则
掌握如何使用逻辑运算符进行逻辑运算
逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型。
为了加深初学者对逻辑运算符的印象,本案例定义一个变量x,使用逻辑运算符连接表达式x>
1和x<
5,通过运行结果分析逻辑运算符的运算规则。
1)编写一个类Example08
2)在main方法下定义变量x,其初始值为3
2)使用逻辑运算符连接两个布尔型的表达式x>
5
3)使用println语句输出运算结果
定义Example08类,其代码如下:
classExample08
publicstaticvoidmain(String[]args)
intx=3;
System.out.println(x>
1&
x<
5);
System.out.println(x<
1|x<
1^x>
System.out.println(!
(x<
1));
运行结果如图2-9所示。
图2-9运行结果
在使用逻辑运算符的过程中,需要注意以下几个细节:
1、逻辑运算符可以针对结果为布尔值的表达式进行运算。
如:
x>
3&
&
y!
=0。
2、运算符“&
”和“&
”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。
当运算符“&
”的右边为表达式时,两者在使用上还有一定的区别。
在使用“&
”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。
如果使用“&
”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&
”被称作短路与。
3、运算符“|”和“||”都表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。
同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。
4、运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。
当两边布尔值不相同时,其结果为true。
案例2-9位运算符
00102012
位运算符
了解位运算符的运算规则
掌握使用位运算符进行逻辑运算
位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。
请使用不同的位运算符对十进制的3和4进行运算。
1)将十进制3和4换算成二进制数
2)使用不同的位运算符对3和4进行位运算
3)编写一个类Example09
4)在main方法下输出3和4进行不同的位运算后的结果
5)对比运算结果,判断运算是否正确
1、将3和4换算成二进制数:
3的二进制为00000011;
4的二进制为00000100
2、&
:
位与运算:
00000100
&
00000011
—————————
00000000
所以,4&
3=0
3、|:
位或运算符
|
00000111
所以,4|3=7
4、^:
异或运算符
00000100
^
00000111
所以,4^3=7
5、~:
按位取反
~:
11111100
原码:
11111100
反码:
10000011
补码:
10000100
所以:
~3=-4
6、<
<
左移
00000011<
2
00001100
3<
2=12
7、定义Example07类,其代码如下:
classExample09
System.out.println(4&
3);
System.out.println(4|3);
System.out.println(4^3);
System.out.println(~3);
System.out.println(3<
2);
运行结果如图2-10所示。
图2-10运行结果
由此可见,二进制位运算与程序运算的结果一致。
Java中的位运算符以及其范例如下Error!
Referencesourcenotfound.所示。
运算符
运算
范例
结果
按位与
0&
0
1
1
|
按位或
0|0
0|1
1|1
1|0
~
取反
~0
~1
^
按位异或
0^0
0^1
1^1
1^0
00000010<
00001000
10010011<
01001100
>
右移
01100010>
00011000
11100010>
11111000
无符号右移
11…11100010>
0011…111000
案例2-10运算符的优先级
00102013
运算符的优先级
掌握运算符之间的优先级
当使用不同的运算符进行运算时,应该按照一定的顺序进行运算,即根据运算符的优先级进行运算。
为了让初学者掌握运算符的优先级,本案例将通过表达式的运算,讲解运算符的优先级。
1)编写一个类Example10
2)在main方法中定义两个int型变量x和y
3)将表达式3>
2*x?
x++:
--x赋值给y
4)用输出语句分别输出变量x和y的值
定义Example10类,其代码如下:
classExample10
intx=1;
inty=0;
y=3>
--x;
System.out.println(x);
System.out.println(y);
运行结果如图2-11所示。
图2-11运行结果
1、本案例中表达式的运算过程如下所示:
1)在表达式y=3>
--x;
中赋值运算符=的优先级最低,所以要先运算=右侧的表达式;
2)?
:
为三元运算符,该运算符的优先级较低,要