第一章 习题及思考题
1. 试分析基本数据类型和引用数据类型的基本特点?
java的8种基本类型:??byte,short, char, int, long,float,double,boolean.??与此对应的,java
提供了8种包装类型:??Byte,Short,Character,Integer,Long,Float,Double,Boolean.??它们之间的相互转换:例如:??double a=1;??//把double基本类型转换为Double包装类型??Double b=new Double(a);??//把Double包装类型转换为double基本类型??a=b.doubleValue();????所谓引用,就是指针了,就是说对象指向的不是数据本身,而是它所在的内存地址.??数组就是引用类型!??一般在传参的时候用的最多。
5. 如果定义有变量double d1, d2=4.0则下列说法正确的是:(B)
A、变量d1,d2均初始化为4.0
B、变量d1没有初始化,d2初始化为4.0 C、变量d1,d2均未初始化
D、变量d2没有初始化,d1初始化为4.0
6. 判断题:所有的变量在使进行用前都必须初始化。(×)
在类中定义的成员变量中的类变量如果你没有初始化java会自动帮你初始化,如果是数
字会自动初始化成0,字符会初始化成'o',对象引用会初始化成null.????当然如果你定义的是局部变量就必须初始化了,否则编译会报错???? 7. 内部数据类型byte的取值范围是:( B )
A、0~65, 535 B、(-128)~127
C、(-32,768)~32,767 D、(-256)~255
8. 下列哪些是不能通过编译的语句:( B )
A、int i = 32; B、float f = 45.0; C、double d = 45.0; D、char a=‘c’;
9. 判断题:Java中数据类型的长度与具体使用的机器相关。( × ) 与您所使用的平台无关
10. 如果定义有double x;float y;int m,则表达式x*y-m的类型为(A ):
A、double B、float C、int D、short
11. 如果定义有short s;byte b;char c,则表达式s*b+c的类型为(C):
A、char B、short C、int D、byte 12. 已知int i= 2147483647; ++i; 则i的值等于多少( A ) A -2147483648 B 2147483647 C 2147483648
13. 已知byte i= 127; ++i; 则i的值等于多少( A ) A -128 B 127 C 128
14. 已知byte i= 127; i=i+1;这两行语句能否编译成功?( 不能 )
15. 执行以下程序段int a=5,b; b=++a*3后b的值为:( B)
A、17 B、18 C、16 D、15 16. 如果x=3,y=5,则表达式x|y的值为:( D ) 两位数有1,则为1
A、15 B、8 C、1 D、7
17. 如果int a=3,b=2,则执行a*=b+8后a的值为:( B )
A、20 B、14 C、30 D、16 18. 若所用变量都已正确定义,以下选项中,非法的表达式是:( C )
A、a!=4||b==1 B、'a'%3 C、'a'=1/2 D、'A'+32
19. 设有定义语句int a[]={1,1,2}; 则以下对此语句的叙述错误的是( C )。
A、定义了一个名为a的一维数组 B、a数组有3个元素
C、a数组的下标为1~3 D、数组中的每个元素是整型 20. 以下数组初始化形式正确的是:( A )
A、int t1[][]={{1,2},{3,4},{5,6}} B、int t2[][]={1,2,3,4,5,6} C、int t3[3][2]={1,2,3,4,5,6} D、int t4[][];t4={1,2,3,4,5,6}
第二章 习题及思考题
1、编写一个程序,用选择法对数组a[]={20,10,55,40,30,70,60,80,90,100}进行从大到小
的排序
public class ArrayPaiXu {
public static void main(String[] args) {
int temp;
int a[]={20,10,55,40,30,70,60,80,90,100}; for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
if(a[i]>a[j]) {
temp=a[i]; a[i]=a[j]; a[j]=temp; } } }
for(int k=0;k<10;k++) {
System.out.println(a[k]); } } }
2、求两个整数的最大公约数
import java.util.Scanner;
public class ZuiDaGongYueShu {
public static void main(String[] args) { }
}
System.out.println(\请输入第一个数m的值\); Scanner sc = new Scanner(System.in);
int m = sc.nextInt(); // 定义第一个数并从键盘获取 System.out.println(\请输入第二个数n的值\); Scanner sca = new Scanner(System.in);
int n = sca.nextInt(); // 定义第二个数并从键盘获取 int temp; // 定义公约数 temp = n; // 给公约数赋初值 if (m % temp == 0) {
System.out.println(\的最大公约数为:\ + n); } else {
for (; temp > 0; temp--) {
if (m % temp == 0 && n % temp == 0) { }
System.out.println(\的最大公约数为:\ + temp); break; } }
3、请打印出如下九九乘法表
* | 1 2 3 4 5 6 7 8 9 -------|------------------------------------ 1 | 1 2 | 2 4 3 | 3 6 9
4 | 4 8 12 16
5 | 5 10 15 20 25 6 | 6 12 18 24 30 36 7 | 7 14 21 28 35 42 49 8 | 8 16 24 32 40 48 56 64 9 | 9 18 27 36 45 54 63 72 81 public class ChengFaBiao {
public static void main(String[] args) {
System.out.print(\); for(int k=0;k<10;k++) {
System.out.print(k+\); }
System.out.println();
System.out.println(\); for(int i=1;i<10;i++) {
System.out.print(\+i+\); for(int j=1;j<=i;j++) {
System.out.print(i*j+\); }
System.out.println(); } } }
4、求一元二次方程ax2+bx+c=0的根,要求a、b、c从控制台输入。 import java.util.*;
class JieHanShu {
public static void main(String[] args) { Scanner scan = new Scanner(System.in); double a, b, c, x1, x2, d; a = scan.nextDouble(); b = scan.nextDouble(); c = scan.nextDouble(); if (a == 0) {
if (b == 0) {