1.什么叫标识符?
标识符是用来标识变量、常量、类名、方法等名字的符号。
是由字母、数字、下划线(_)、美元符($)组成的、必须以字母、下划线或美元符开头的、字符个数有限的字符序列。
Java中的标识符区分大小写,且不得于关键字相同。
2.什么叫变量?什么叫常量?系统是否为变量和常量分配内存空间?
变量是一个保存数据的内存区域的名字。系统在变量定义时为其分配内存空间。
在整个程序运行期间保持不变的变量称作常量。常量在定义时也为其分配相应的内存空间。
3.什么叫数据类型?定义变量时为什么要指出该变量的数据类型?
数据类型规定了一类数据的数据位长度(或称字符个数)、取值范围以及对该类数据所能进行的操作。
数据类型不同,所定义的变量占用的内存空间、取值范围以及对该类数据所能进行的操作也不同。所以必须在定义时说明。
4.什么叫表达式?Java语言共有几种表达式?
用运算符和圆括号把运算对象连接起来的、符合Java语言语法规则的式子称作表达式。
运算符是算术运算符的表达式称作算术表达式,运算符是关系运算符的表达式称作关系表达式,运算符是逻辑运算符的表达式称作逻辑表达式,运算符是位运算符的表达式称作位表达式。
5.有几种形式的分支语句?解释每种分支语句的执行流程?
分支语句包括有:if语句、switch语句、switch-break语句
① 基本if语句
if (〈逻辑表达式〉)
〈语句组1〉;
[else 〈语句组2〉;]
② if嵌套语句
if (n >= 1)
{
if (n <= 100) ……
}
else ……
③switch语句
switch (〈表达式〉)
{
case〈常量1〉:〈语句组1〉;
[break;]
case〈常量2〉:〈语句组2〉;
[break;]
……;
[default:〈语句组〉]
}
④ switch语句中的break语句
switch (〈表达式〉)
break;
6.有几种形式的循环语句?解释每种循环语句的执行流程?
包括:for语句、while语句、do-while语句
①for语句
for ([〈表达式1〉];[〈表达式2〉];[〈表达式3〉])
〈循环体〉;
② while语句
while (〈逻辑表达式〉)
〈循环体〉;
③ do-while语句
do
{
〈语句组〉;
} while (〈逻辑表达式〉) ;
7.几种循环结构可以互相转换吗?
循环结构主要分为1.先执行再判断条件;2.先判断条件再执行
主要将执行和不执行的位置互换,则两者的意义是完全相同的
所以可以互相转换
8.什么叫引用类型?数组变量是引用类型变量吗?字符串变量是引用类型变量吗?
引用类型是指该类型的标识符表示的是一片内存连续地址的首地址。
Java中的数组变量、字符串都是引用类型。
9.Java语言是怎样构造二维数组的?
Java语言只定义了一维数组,但是,如果一维数组的每个数组元素都是一个一维数组,则构成了Java语言的二维数组。
10.Java语言是怎样构造不规则数组的?
由于Java语言的二维数组是由一维数组定义的,所以,可以把二维数组中的每个一维数组定义为不同的元素个数,这样就可以构成不规则的二维数组。
2、程序设计题:
11.下面哪些字符不合法?为什么?
(1)HellowWorld (2)2Great (3)_come (4)–month (5)count&add
(6)23233 (7)non-stop (8)java (9)Hotjava (10)glade300
合法的有:(1)、(3)、(8)、(9)、(10) java不是关键字
不合法的:(2)(6)数字开头、(4)(5)(7)含非法字符
12.下面哪些是Java中的关键字?
Transient、constant、this、super、until、goto、repeat、interrupt、synchronized、const、class、
Java、throws、throw、volatile、try、catch、implements、extends、final、static、finalize
其中的关键字有:transient、this、super、goto、synchronized、class、throws、throw、try、catch、implements、extends、final、static
13、指出下面数值的数据类型
(1)396 (2)8864L (3)23.322 (4)23.299D (5)34.333F
(6)23.3e3 (7)'a' (8)true (9)false (10)"abcd"
(1)int (2)long (3)double (4)double (5)float
(6)double (7)char (8)boolean (9)boolean (10)String
14.叙述数据类型转换时不损失数据位数或精度应遵守的转换原则
把数值范围和精度小的数据类型向数值范围和精度大的数据类型转换
15.指出下面程序段中的错误。
(1)int x=1;
while(x<=10);
{
x++;
}
(2)switch(n)
{
case 1:
System.out.println(“The numbe is 1”);
case 2:
System.out.println(“The numbe is 2”);
Break;
case 3:
System.out.println(“The numbe is 3”);
Break;
}
(1)while语句行后面多了";"
(2)case1语句之后应该加break
16.while 与do-while语句的区别是什么?
while是先判断条件再执行语句,do-while是先执行一次语句再判断条件
do-while语句至少执行一次循环体(因其结束条件判断在后面进行);而对于while语句来说,当一开始循环条件就不满足时,循环体将一次也不执行。
17.下面程序的输出结果是什么?
public class A
{
public static void main(String args[])
{
int[] a = {11,12,13,14};
int[] b = {0,1,2,3};
System.out.println(a[b[3]]);
System.out.println(a[2]);
}
}
14
13
18.下面程序的输出结果是什么?
public class Mystery
{
public static void main(String args[])
{
int y, x = 1, total=0;
while (x<=10)
{
y=x*x;
System.out.println(y);
total +=y;
++x;
}
System.out.println(“Total is ”+total);
}
}
1
4
9
16
25
36
49
64
81
100
Total is 385
19.下面程序的输出结果是什么?
public class A
{
public static void main(String args[])
{
int size=10;
int[] array = new int[size];
size =20;
System.out.println(array.length);
}
}
10
20.编写程序分别输出如下的图形
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
(1) (2)
(1)
class test0923 {
public static void main(String[] args)
{
//上面三行
for (int i=1;i<=3;i++)
{
for (int j=1;j<=6-i;j++)
{
System.out.print("* ");
}
System.out.println("");//换行
}
//下面四行
for (int i=1;i<=4;i++)
{
for (int j=0;j<=i;j++)
{
System.out.print("* ");
}
System.out.println("");//换行
}
}
}
(2)
class test0923 {
public static void main(String[] args)
{
//打印上面4行
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4-i;j++)
{
System.out.print(" ");//打印空格
}
for(int k=1;k<=2*i-1;k++)
{
System.out.print("* ");//打印*
}
System.out.println("");//换行
}
//打印下面3行
for(int i=1;i<=3;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=7-2*i;k++)
{
System.out.print("* ");
}
System.out.println("");
}
}
}
21.写出三种无限循环的代码段
(1)
class test0923 {
public static void main(String[] args)
{
for (int i=1;i<=2;)
{
System.out.println("*");
}
}
}
(2)
class test0923 {
public static void main(String[] args)
{
int i = 10;
while (i>=2)
{
System.out.println("*");
}
}
}
(3)
class test0923 {
public static void main(String[] args)
{
for (int i=1;ture;i++)
{
System.out.println("*");
}
}
}
class test0923 {
public static void main(String[] args)
{
short k = 32764;
do
{
k++;k++;
System.out.print("*");
}while(k>0);
}
}
这个不是无限循环,因为k到达一个值之后会溢出,变成负值,然后跳出循环
22.设计程序计算1+2+3+…+100的结果
class test0923 {
public static void main(String[] args)
{
int total=0;
for (int i=1;i<=100;i++)
{
total +=i;
}
System.out.println(total);
}
}
23.设计一个程序,将一维数组中的元素的顺序倒置,例如,数组元素的顺序原来是:1,2,3,4,5.倒置后的顺序变为:5,4,3,2,1
class test0923 {
public static void main(String[] args)
{
int a[] = {1,2,3,4,5,6,7,8,9,10,90,500,13};
int temp;
for (int i=0;i<=(a.length-1)/2;i++)
{
temp=a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=temp;
}
for (int j=0;j<=a.length-1;j++)
{
System.out.println(a[j]);
}
}
}
24.设计程序对一个整数数组中的元素进行排序(要求采用不同于例2.12的排序方法)
class test0923 {
public static void main(String[] args)
{
int a[] = {30,81,37,45,26,46,44,78,80,64};
System.out.println("排序前数组元素为:");
for(int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
//插入排序法
for (int i=1;i<a.length;i++)
{
int j=i-1;
int temp=a[i];
while(a[j]>temp)
{
a[j+1]=a[j];
j--;
if(j<0)
break;
}
a[j+1]=temp;
}
System.out.println("\n排序后数组元素为:");
for(int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
}
}