1.1写出输出的结果:
//考查运算符的优先级
class Demo{
public static void main(String[] args){
int x=0,y=1;
if(++x==y-- & x++==1||--y==0)
System.out.println("x="+x+",y="+y);
else
System.out.println("y="+y+",x="+x);
}
}
答:
x=2,y=0
1.2插入代码,实现n和m值的交换
int n = 5,m = 13;
//插入代码,实现n和m值的交换
System.out.println("n="+n+",m="+m);
答:
int temp=n;
n=m;
m=temp;
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); //
}
}
答:
a=3 b=9 c=8
a=3 b=10 d=10
a=4 b=10 e=3
a=5 b=10 f=5
1.4
(1)short s1 = 1; s1 = s1 + 1;有什么错?
(2)short s1 = 1; s1 += 1;有什么错?
答:
(1)错误,赋值表达式等号两侧转换规则是右侧向左侧看齐,正确应将第二句改为s1=(short)(s1+1);
(2)正确,执行s1+=1;实际上是执行s1=(short)(s1+1);
1.5Java有没有goto?
答:
goto是C语言中的,一般配合条件语句,可以实现条件转移,构成循环,跳出循环等功能。
在结构化程序语言中不主张使用goto语句,以免造成程序流程魂断,但是在java语言中,goto这个词只是作为了保留字,还没有使用,因为java语言讲究简单,方便。
1.6用最有效率的方法算出2乘以8等於几?
答:
使用移位运算符
2<<3;
1.7char型变量中能不能存贮一个中文汉字?为什么?
答:
能。char型变量采用Unicode字符编码,Unicode字符集包含了汉字,所以char型变量中可以存储汉字。但是,如果某个特殊的汉字没有被包含在Unicode字符集中,那么这个char型变量中就不能存储这个特殊汉字。
1.8String是最基本的数据类型吗?
答:
不是,基本数据类型包括:byte,short,int,long,float,double,boolean,char.String是类,代表字符串,属于引用类型,引用类型还包括:类,接口,数组…
二、流程控制练习
2.0写出结果:
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");
}
}
答:
无输出,第一个if语句不执行,后面的if-else在第一个if语句中。
2.1switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:
Java5版本之前switch可以支持char,byte,short,int;java7版本引入了String类,以及Charactor,Byte,Short,Integer.
2.2写出结果:
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
分析:for(;😉{}是一个死循环,在进入第一层for(;;)循环时,i值变为1,进入第二层后,若要满足结束条件if(i > j–),j要递减到0才满足,此时break到tp标号,整个双层循环结束,i与j的终值分别为1和-1.(要注意j为0时满足,但是最后还有一步0–)
2.3
1、 输出从1到100之间所有的整数;
2、 输出从1到100之间所有的奇数;
3、 输出从1到100之间所有不能被3整除的数;并输出这些整数的和;
答:
(1)
public static void main(String []args){
for(int i=1;i<=100;i++)
{
System.out.println(i);
}
}
(2)
public static void main(String []args){
for(int i=1;i<=100;i+=2)
{
System.out.println(i);
}
}
(3)
public static void main(String []args){
int sum=0;
for(int i=1;i<=100;i++)
{
if(i%3!=0)
{
System.out.println(i);
sum+=i;
}
}
System.out.println(sum);
}
2.4分别使用if-else if-else语句和switch-case语句根据用于指定月份,打印该月份所属的季节。
//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
(1)if-else语句:
import java.util.Scanner;
public class ceshi{
private static Scanner in;
public static void main(String []args){
in = new Scanner(System.in);
int x=in.nextInt();
if(x==3||x==4||x==5){
System.out.println("春季");
}
if(x==6||x==7||x==8){
System.out.println("夏季");
}
if(x==9||x==10||x==11){
System.out.println("秋季");
}
if(x==12||x==1||x==2){
System.out.println("冬季");
}
}
}
(2)switch-case语句:
import java.util.Scanner;
public class ceshi{
private static Scanner in;
public static void main(String []args){
in = new Scanner(System.in);
int x=in.nextInt();
switch(x)
{
case 3:
case 4:
case 5:
System.out.println("春季"); break;
case 6:
case 7:
case 8:
System.out.println("夏季"); break;
case 9:
case 10:
case 11:
System.out.println("秋季"); break;
case 12:
case 1:
case 2:
System.out.println("冬季"); break;
}
}
}
2.5已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。
90~100为等级A,80~89为等级B,70~79为等级C,
60~69为等级D,0~59为等级E。
要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。
例如:当成绩为100时,该学生的等级时A。
答:
import java.util.Scanner;
public class ceshi{
private static Scanner in;
public static void main(String []args){
in = new Scanner(System.in);
int score=in.nextInt();//输入成绩
if(score>=90 && score<=100)
{
System.out.println("A");
}
if(score>=80 && score<=89)
{
System.out.println("B");
}
if(score>=70 && score<=79)
{
System.out.println("C");
}
if(score>=60 && score<=69)
{
System.out.println("D");
}
if(score>=0 && score<=59)
{
System.out.println("E");
}
}
}
2.6
编写程序,判断给定的某个年份是否是闰年。
闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年。
答:
import java.util.Scanner;
public class ceshi{
private static Scanner in;
public static void main(String []args){
in = new Scanner(System.in);
int year=in.nextInt();//输入年份
if(year%4==0 && year%100!=0 || year%400==0)
{
System.out.println("Yes");
}
else{
System.out.println("No");
}
}
}
2.7
利用程序输出如下图形:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
答:
public class ceshi{
public static void main(String []args){
for(int i=1;i<=4;i++)
{
for(int j=1;j<=2*i-1;j++)
{
System.out.print("* ");
}
System.out.print("\n");
}
for(int i=3;i>=1;i--)
{
for(int j=1;j<=2*i-1;j++)
{
System.out.print("* ");
}
System.out.print("\n");
}
}
}
2.8
一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
答:
public class ceshi{
public static void main(String []args){
double h=100;
double h2=h;
double sum=h;
double lasth=0;
for(int i=0;i<10;i++)
{
h/=2;
h2=2*h;
sum+=h2;
}
System.out.println(sum);
System.out.println(h);
}
}
2.9在JAVA中,如何跳出当前的多重嵌套循环?
答:
可以在循环体开头设置一个标号,使用带标号的break语句跳出循环。
三、数组练习:
3.0java能动态分配数组吗?
答:
能 ,具体实现暂时不清楚.
3.1怎么获取数组的长度?
答:
数组名.Length
3.2数组有没有length()这个方法? String有没有length()这个方法? 答: **数组中没有length()这个方法,但有length这个属性;String中有length()这个方法,用来得到字符串的长度。**
3.3下面数组定义正确的有_____
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”};
答:
B和D.
3.4写出结果。
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.5下面哪个数组定义是错误的?并对错误的答案加上单行注释,写出错误的原因。
A,float[]=new float[3]; //缺少变量名称,改为float[] a=new float[3];
B, float f2[]=new float[];//[]应写在float后
C, float[] f1=new float[3];//
D, boolean[] b={"true","false","true"};//
E, double f4[]={1,3,5}; //[]应写在double后
F, int f5[]=new int[3]{2,3,4}; //
G, float f4[]={1.2F,3.0,5.4};//
3.6对数组{1,8,4,6,12,89,100,85}实现逆序排列
下面的代码为逆序输入:emmmm…
import java.util.Arrays;
public class ceshi{
public static void main(String []args){
int[] a={1,8,4,6,12,89,100,85};
Arrays.sort(a);
for(int i=a.length-1;i>=0;i--)
{
System.out.println(a[i]);
}
}
}
四、其他练习
4.1.标识符命名规则是什么?
1.标识符由字母、数字和下划线组成
2.标识符的第一位必须是字母或者下划线,不能是数字
4.2数据类型有哪些?基本数据类占用多少字节?
Byte—1
Short—2
Int —4
Long—8
Float—4
Double—8
Char—2
Boolean—4(JVM中boolean变量当作int处理)
4.3什么是函数?函数有什么特点?
面向对象的语言叫方法,面向过程的语言叫函数。实际上函数就是方法,方法就是函数,只是在不同语言中的称呼不同。
4.4谈谈jvm内存结构?
不懂
4.5&与&&的区别?
&是位运算符,&&是布尔逻辑运算符。
在运行时:
&两边的条件都要判断
&&先判断前面的,若为false,则短路,不在判断后面的。
4.6说说Break和continue用法?
区别:
break语句则是结束整个循环过程,不再判断执行循环的条件是否成立
continue语句只结束本次循环,而不是终止整个循环的执行。
用法:
(1)Break语句通常用在循环语句和switch语句。
①当break语句用在循环语句中:
可以使程序终止循环而执行循环后面的语句,通常break语句总是和if语句搭配使用,即满足条件时便跳出循环。
②当break语句用在switch语句中:
可以使程序跳出switch语句而执行switch以后的语句,如果没有break,则会成为死循环。
(2)continue作用:跳过循环体中剩余语句,强行执行下一次循环。Continue语句只用在for、while、do-while等循环体总,常与if条件语句一起使用,加速循环。