第二章习题
1.运算符练习
1.1.
写出输出的结果.
//考查运算符的优先级
class Demo{
public static void main(String[] args){
int x=0,y=1;
if(++x==y-- & x++1||–y0)
System.out.println(“x=”+x+",y="+y);//x = 2,y = 0;
else
System.out.println(“y=”+y+",x="+x);
}
}
1.2.
int n = 5,m = 13;
//插入代码,实现n和m值的交换
System.out.println(“n=”+n+",m="+m);
1.3.
写出输出结果。
class Demo{
public static void main(String[] args){
int a=3,b=8;
int c=(a>b)?a++:b++;
System.out.println("a="+a+"\tb="+b+"\tc="+c); //
int d=(a>b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\td="+d); //
int e=(a<b)?a++:b++;
System.out.println("a="+a+"\tb="+b+"\te="+e); //
int f=(a<b)?++a:++b;
System.out.println("a="+a+"\tb="+b+"\tf="+f); //
}
}
1.4.
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)
1.5.
Java有没有goto?
答:java中的保留字,现在没有在java中使用
1.6.
用最有效率的方法算出2乘以8等於几?
答:2 << 3
1.7.
char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,
所以放一个中文是没问题的
1.8.
String是最基本的数据类型吗?
答:基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,
2.流程控制练习
2.1.
写出结果。
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)
if(n>2)
System.out.println("A");
else
System.out.println("B");
}
}
2.2.
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是
int、 short、 char 或者 byte。long不能作用于swtich.JDK1.7新加入了String类型。
2.3.
写出结果。
public class Demo{
public static void main(String []args){
int i = 0, j = 5;
tp: for (;?{
i++;
for(;?{
if(i > j–)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);//i=1,j=-1;
}
}
2.4.
1、 输出从1到100之间所有的整数;
2、 输出从1到100之间所有的奇数;
3、 输出从1到100之间所有不能被3整除的数;并输出这些整数的和
2.5.
分别使用if-else if-else语句和switch-case语句
根据用于指定月份,打印该月份所属的季节。
//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
答:
if(x3 || x4 || x5)
System.out.println(x+“春季”);
else if(x6 || x7 || x8)
System.out.println(x+“夏季”);
else if(x9 || x10 || x11)
System.out.println(x+“秋季”);
else if(x12 || x1 || x2)
System.out.println(x+“冬季”);
else
System.out.println(x+“月份不存在”);
[第二种]
if(x>12 || x<1)
System.out.println(x+“月份不存在”);
else if(x>=3 && x<=5)
System.out.println(x+“春季”);
else if(x>=6 && x<=8)
System.out.println(x+“夏季”);
else if(x>=9 && x<=11)
System.out.println(x+“秋季”);
else
System.out.println(x+“冬季”);
[第3种]
public static void main(String[] args) {
int x = 4;
switch(x){
case 3:
case 4:
case 5:
System.out.println(x+“春季”);
break;
case 6:
case 7:
case 8:
System.out.println(x+"夏季");
break;
case 9:
case 10:
case 11:
System.out.println(x+"秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x+"冬季");
break;
default:
System.out.println("nono");
}
2.6.
已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。
90~100为等级A,80~89为等级B,70~79为等级C,
60~69为等级D,0~59为等级E。
要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。
例如:当成绩为100时,该学生的等级时A。
class LevelDemo{
//定义一功能,通过给定分数,获取该分数对应的等级。
public static void main(String[] args){
int num = 89;
if(num>=90 && num<=100)
System.out.println(“level = A”);
else if(num>=80 && num<=89)
System.out.println(“level = B”);
else if(num>=70 && num<=79)
System.out.println(“level = C”);
else if(num>=60 && num<=69)
System.out.println(“level = D”);
else
System.out.println(“level = E”);
}
}
2.7.
编写程序,判断给定的某个年份是否是闰年。
闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年。
if((year % 4 ==0 && year % 100 != 0) || year % 400 == 0){}
2.8.
利用程序输出如下图形:
*
for (int i = 0; i < 7; i++) {
if(i < 4){
for (int j = 0; j < 2 * i + 1; j++) {
System.out.print("* “);
}
System.out.println();
}else{
for (int k = 0; k < 13 - 2 * i; k++) {
System.out.print(”* ");
}
System.out.println();
}
}
2.9.
一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
publicclass Num1 {
publicvoid ball(){
double num=100;
double height=100;
for (int i = 0; i < 10; i++) {
height=height/2;
num+=height*2;
}
System.out.println(“小球10次共经过:”+num+“米”);
System.out.println(“第10次的高度为:”+height+“米”);
}
publicstaticvoid main(String[] args) {
Num1 num1= new Num1();
num1.ball();
}
}
2.10.
在JAVA中,如何跳出当前的多重嵌套循环?
答:用break; return 方法。
3.数组练习
3.1.
java能动态分配数组吗?
答:可以。int i = 12;int[] myInt = new int[i];
3.2.
怎么获取数组的长度?
.length属性获取
3.3.
数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有length()这个方法
3.4.
下面数组定义正确的有BD
A.String strs[] = { ‘a’ ‘b’ ‘c’};
B.String[] strs = {“a”, “b”, “c”};
C.String[] strs = new String{“a” ”b” ”c”};
D.String strs[] = new String[]{“a”, “b”, “c”};
E.String[] strs = new String[3]{“a”, “b”, “c”};
3.5.
写出结果。
class Demo{
public static void main(String[] args){
String foo=“blue”;
boolean[] bar=new boolean[2];
if(bar[0]){
foo=“green”;
}
System.out.println(foo);
}
}
[输出]:blue
3.6.
下面哪个数组定义是错误的。
并对错误的答案加上单行注释,写出错误的原因。
A,float[]=new float[3]; //
B, float f2[]=new float[];//
C, float[] f1=new float[3];//
D, boolean[] b={“true”,“false”,“true”};//
E, double f4[]={1,3,5}; //
F, int f5[]=new int[3]{2,3,4}; //
G, float f4[]={1.2F,3.0,5.4};//
3.7.
对数组{1,8,4,6,12,89,100,85}实现逆序排列
4.其他练习
4.1.标识符命名规则是什么?
由数字(0-9),大小写英文字母,以及_和$组成。
不能以数字开头。
不能使用关键字来自定义命名。
4.2.数据类型有哪些?基本数据类占用多少字节?
(1)基本数据类型(4类8种):
整数类型:byte、short、int、long
浮点数类型:float、double
字符类型:char
布尔类型:boolean(ture false)
(2)引用数据类型:
类
接口
数组
4.3.什么是函数?函数有什么特点?
定义:函数就是定义在类中的具有特定功能的一段独立小程序。
特点:
定义函数可以将功能代码进行封装
便于对该功能进行复用
函数只有被调用才会被执行
函数的出现提高了代码的复用性
对于函数没有具体返回值的情况,返回值类型用关键字void表示,
那么该函数中的return语句如果在最后一行可以省略不写。
4.4.谈谈jvm内存结构?
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
方法区:静态成员、构造函数、常量池、线程池
本地方法区:window系统占用
寄存器:
4.5.&与&&的区别?
答:Java 中&&和&都是表示与的逻辑运算符,都表示逻辑运输符 and,当两边的表达式都为 true 的时候,整个运算结果才为true,否则为 false。&&的短路功能,当第一个表达式的值为 false 的时候,则不再计算第二个表达式;&则两个表达式都执行。&可以用作位运算符,当&两边的表达式不是 Boolean 类型的时候,&表示按位操作。
4.6.说说Break和continue用法?
1)break 语句通常用在循环语句和开关语句中。当 break 用于开关语句 switch 中时,可使程序跳出 switch而执行 switch 以后的语句;如果没有 break 语句,则将成为一个死循环而无法退出。当 break 语句用于 do-while、for、while 循环语句中时,可使程序终止循环而执行循环后面的语句,通常 break 语句总是与 if 语句联在一起,即满足条件时便跳出循环。2)continue 语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue 语句只用在 for、while、do-while 等循环体中,常与 if 条件语句一起使用,用来加速循环、
continue 语句和 break 语句的区别:1) continue 语句只结束本次循环,而不是终止整个循环的执行2) break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立.