一、运算符练习
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条件语句一起使用,加速循环。