期中考试

一. 单选题(共13 题,26.0分)
   
1. (单选题,2.0分)以下不属于面向对象特性的是(   )
A. 过程
B. 多态
C. 继承
D. 封装
正确答案: A

2. (单选题,2.0分)以下说法正确的是(   )。
A. Java的一个源文件可以有多个public类//但最多一个
B. Java的每个源文件一定要有public类//可以没有
C. 一个Java源文件只能存放一个类//可以多个
D. 一个Java应用程序只能有一个主类
我的答案:D正确答案: D
3. (单选题,2.0分)以下属于合法标识符的是(   )。
A. true
B. "
C. $_
D. 3x
正确答案: C


7. (单选题,2.0分)
以下代码执行后输出的结果是(   )
public class MainClass {
    public static void main(String args[]) {
        MainClass mainClass1 = new MainClass();
        MainClass mainClass2 = new MainClass();
        System.out.println(mainClass1.equals(mainClass2));
    }
}
A. null
B. true
C. 程序报错终止
D. false
正确答案: D
8. (单选题,2.0分)Java编译器存在于(    )中。
A. JavaScript
B. JRE
C. JDK
D. JSP
正确答案: C
   //jdk编译  jre运行 jvm虚拟机 
   
9. (单选题,2.0分)以下变量的定义错误的是(   )。
A. byte x = -128;  -128-127
B. char x = 98;  //+-65535
C. double x = 100; 
D. float x = 1.0;  //1.0f
正确答案: D
10. (单选题,2.0分)以下不属于JAVA版本的是(    )。
A. Java EE
B. Java SS
C. Java ME
D. Java SE
正确答案: B
    //都有E
11. (单选题,2.0分)数组的声明错误的是(   )
A. int arr[] = {1,2,3};
B. int arr[3];//前面不能有值
C. int []arr;
D. int arr[];
正确答案: B
12. (单选题,2.0分)面向对象是一种把事物的属性和行为(   )的思想。
A. 过程化
B. 简单化
C. 抽象化
D. 实例化
正确答案: C
13. (单选题,2.0分)以下代码正确的是(   )。
A. System.out.printf(""");
B. System.out.println("%d", 123);//println不能有%d
C. System.out.println(123);
D. System.out.printf("%d", 99.9);
正确答案: C
二. 填空题(共10 题,20.0分)
1. (填空题,2.0分)
以下代码中,如果想在if语句条件成立时跳出所有循环,应该在横线上填写的代码是:
Loop: for (int i = 0; i < 100; i++) {
  for (int j = 0; j < 200; j++) {
    if (j == 50) 
     ______________;
  }
}
正确答案:
(1) break Loop
2. (填空题,2.0分)java的八种基本数据类型中,___类型的精度最高。
正确答案:
(1) double
                     //1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。 
3. (填空题,2.0分)
在int前面加入修饰词,让num成为类变量。
class Demo {
    ____ int num;
}
正确答案:
(1) static
                     
4. (填空题,2.0分)Integer封装类对应的基本数据类型是____。
正确答案:
(1) int
5. (填空题,2.0分)int x = (int) 0.5;   代码执行后x的值是____。
正确答案:
(1) 0
6. (填空题,2.0分)代码:System.out.println(13/7);执行后输出的结果是___。
正确答案:
(1) 1 //默认转换int类型
7. (填空题,2.0分)
根据以下代码中fun()方法的调用,补全fun()方法的参数定义,不允许出现固定参数。
public class MainClass {
    static void fun(____x) {
    }
    public static void main(String args[]) {
        fun(1.0F, 2.0, 3.0, 4.0); //没有f默认double
        fun(1.0F, 2.0, 3.0, 4.0, 5.0);
    }
}

正确答案:
(1) double...;double ...;double ... 
8. (填空题,2.0分)InputStream类的包名为:java.io,则在主类中引用该类的import语句写法是:____;。
正确答案:
(1) import java.io.InputStream;import java.io.*
答案解析:
9. (填空题,2.0分)设一个类的包名是com.test,则该类所在源文件第一行代码是___;。
正确答案:
(1) packge com.test
                     ////////////////////////
10. (填空题,2.0分)JRE中用于解释执行字节码文件的软件是___。
正确答案:
(1) jvm;Jvm;JVM;java虚拟机;Java虚拟机;JAVA虚拟机
三. 判断题(共11 题,22.0分)
1. (判断题,2.0分)Java是一门面向对象编程语言。
A. 对
B. 错
正确答案: 对
2. (判断题,2.0分)
以下是定义类的正确代码。
class A {
    double pi;
    pi = 3.14;
}
正确答案: 错
3. (判断题,2.0分)负数的原码、反码、补码均相同。
正确答案: 对 //错
4. (判断题,2.0分)Java中注释的内容越多,编译后执行的程序运行效率越低。
正确答案: 错
5. (判断题,2.0分)System.out.println("Hello");语句执行会在字符串输出后进行换行。
正确答案: 对
6. (判断题,2.0分)switch语句中判断的参数类型不能是float和double
正确答案: 对
7. (判断题,2.0分)友好变量访问修饰符是friendly。 //在成员的前面不写任何的访问修饰符的时候,就会默认是friendly
正确答案: 错
8. (判断题,2.0分)类方法不能调用实例变量。
正确答案: 对
9. (判断题,2.0分)final修饰的变量,声明之后它的值即不再修改。
正确答案: 对
10. (判断题,2.0分)在Java中,设保留2位小数的double型变量x,乘以100后的结果为y,则y小数点后的小数位一定全是0。
正确答案: 错
11. (判断题,2.0分)一个类最多只能拥有一个构造方法。 //可以多个
正确答案: 错
四. 其它(共2 题,32.0分)
1. (其它,15.0分)编写一个Java应用程序,提示用户从键盘输入一个四位整数,从控制台获取用户输入的数,分别输出该数对应的千位、百位、十位、个位。
我的答案:
import java.util.Scanner;

public class MainClass {
    public static void main(String [ ] args){
        Scanner s =new Scanner(System.in);
        System.out.println("输入一个四位整数");
        int num=s.nextint( );
        int num_bit=num% 10;
        int num_ten=(num/10)%10;
        int num_hundred=(num/100)%10;
        int nnnn=(num/1000)%10;
        System.out.print("个位:"+ num_bit+" ");
        System.out.print("十位:"num_ten+" ");
        System.out.print("百位:" num_hundred+" ");
        System.out.print("千位:" nnnn );

    }
}       

2. (其它,17.0分)创建一个Circle类,该类拥有一个半径变量,一个求圆周长的方法,一个求圆面积的方法,在主类中获取用户输入的半径后,创建Circle对象,输出圆的面积和周长。
我的答案:(未校准)
import java.util.Scanner;

import hello.Circle;
public class Circle {
	
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		Circle1 c = new Circle1();
		System.out.print("请输入圆半径:");
		c.radius = s.nextDouble();
		System.out.println("圆半径为:"+c.getRadius());
		System.out.println("圆周长为:"+c.findGirth());
		System.out.println("圆面积为:"+c.findArea());
	}

}

class Circle1{
	double radius;//半径
	
	public double findGirth() {//计算周长
		return 3.14*radius*2;
	}
	
	public double findArea() {//计算面积
		return 3.14*radius*radius;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}
	
}

1-3章作业

一. 单选题(共4题)
1. (单选题)Java是一门(    )语言。
A. 机器
B. 汇编
C. 高级
D. 低级
正确答案: C
2. (单选题)Java编译器对.java文件编译后生成的文件是(   )文件。
A. .apk
B. .class
C. .exe
D. .jdk
正确答案: B
    ///////////
3. (单选题)JVM存在于(   )中。
A. JDK
B. JRE
C. JSP
D. JavaScript
正确答案: B
4. (单选题)以下说法正确的是(   )。
A. 一个Java源文件只能存放一个类
B. 一个Java应用程序只能有一个主类
C. Java的一个源文件可以有多个public类
D. Java的每个源文件一定要有public类
正确答案: B
二. 多选题(共5题)
5. (多选题)以下代码正确的是(   )。
A. System.out.println("%d", 123);
B. System.out.printf(""");
C. System.out.printf("%c", 99);
D. System.out.println(123);
正确答案: CD
6. (多选题)以下不属于合法标识符的是(   )。
A. 中国
B. true
C. 2B铅笔
D. 买支2B铅笔
正确答案: BC
7. (多选题)以下代码错误的是(   )。
A.
int x = 123;

short y = x;

B. byte x = 127;
C. long x = 100.1;
D. char x = "x";
正确答案: ACD
8. (多选题)以下变量的定义正确的是(   )。
A. float x = 1.0;
B. byte x = -129;
C. double x = 100;
D. char x = 98;
正确答案: CD
9. (多选题)以下属于合法标识符的是(   )。
A. good人1个
B. False  //区分大小写
C. $_$
D. 2people
正确答案: ABC
三. 填空题(共3题)
10. (填空题)A、B、C类均在单独的源文件中,A类中创建了B类对象,B类对象创建了C类对象,则单独编译B类的源文件后___类一定会被自动编译。
正确答案:
(1) C
11. (填空题)在变量定义的前面加上___关键字,它就会变成常量。
正确答案:
(1) final
12. (填空题)int x = (int) 200.999;   代码执行后x的值是____。
正确答案:
(1) 200
四. 判断题(共5题)
13. (判断题)在Java中,设保留2位小数的double型变量x,乘以100后的结果为y,则y小数点后的小数位一定全是0。
正确答案: 错
14. (判断题)“面向对象编程”指的是与对象面对面编写程序。
正确答案: 错
15. (判断题)使用代码   System.out.println(""");   可以输出一个双引号。
正确答案: 错
16. (判断题)Java中注释的内容越多,编译后执行的程序运行效率越低。
正确答案: 错
17. (判断题)Java是一门面向过程编程语言。
正确答案: 错

4-5章

一. 单选题(共7题)
1. (单选题)代码:System.out.println(1 + 2 + "3");,执行后输出的结果是(   )
A. 6
B. 24
C. 33
D. 123
正确答案: C
2. (单选题)
以下代码执行后输出的结果是(   )
public class MainClass {
    int a = 100;
    int fun(int a) {
        return this.a + a;
    }
    public static void main(String args[]) {
        MainClass mainClass = new MainClass();
        System.out.println(mainClass.fun(50));
    }
}
A. 50
B. 100
C. 150
D. 200
正确答案: C
3. (单选题)数组的声明错误的是(   )
A. int []arr;
B. int arr[3];
C. int arr[];
D. int arr[] = {1,2,3};
正确答案: B
4. (单选题)表达式:0B0111 | 0B0111,的结果是(   )
A. 0B0000
B. 0B0111
C. 0B1000
D. 0B1111
正确答案: B
5. (单选题)
以下代码执行后输出的结果是(   )
public class MainClass {
    public static void main(String args[]) {
        MainClass mainClass1 = new MainClass();
        MainClass mainClass2 = new MainClass();
        System.out.println(mainClass1.equals(mainClass2));
    }
}
A. true
B. false
C. null
D. 程序报错终止
正确答案: B
6. (单选题)关于访问权限的说法正确的是(   )
A. 类中的变量或方法一定要有访问权限修饰符
B. private修饰的变量,不能在定义变量的类外进行访问 ////
C. A类与B类的包名不同,则B类不能访问A类的protected修饰的变量
D. friendly修饰的变量是类的友好变量
正确答案: B
7. (单选题)以下不属于面向对象特性的是(   )
A. 封装
B. 继承
C. 多态
D. 过程
正确答案: D
二. 填空题(共6题)
8. (填空题)InputStream类的包名为:java.io,则在主类中引用该类的import语句写法是:____;。
正确答案:
(1) import java.io.InputStream;import java.io.*
答案解析:
9. (填空题)float对应的封装类是Float,int对应的封装类是____。
正确答案:
(1) Integer
10. (填空题)
以下代码中,如果想在if语句条件成立时跳出所有循环,应该在横线上填写的代码是:
Loop: for (int i = 0; i < 100; i++) {
  for (int j = 0; j < 200; j++) {
    if (j == 50) 
     ______________;
  }
}
正确答案:
(1) break Loop
11. (填空题)
在int前面加入修饰词,让num成为类变量。
class Demo {
    ____ int num;
}

正确答案:
(1) static
12. (填空题)
根据以下代码中fun()方法的调用,补全fun()方法的参数定义,不允许出现固定参数。
public class MainClass {
    static void fun(____x) {
    }
    public static void main(String args[]) {
        fun(1.0F, 2.0, 3.0, 4.0);
        fun(1.0F, 2.0, 3.0, 4.0, 5.0);
    }
}
正确答案:
(1) double...;double ...;double ... ;
13. (填空题)Java中基本数据类型中,浮点型包括float和____。
正确答案:
(1) double
三. 判断题(共7题)
14. (判断题)设a是int型变量,则java中表示a大于1且小于2的关系表达式为:1<a<2.
正确答案: 错
15. (判断题)类的构造方法不允许有参数。
正确答案: 错
16. (判断题)switch语句中判断的参数类型不能是float和double
正确答案: 对
17. (判断题)正数的原码、反码、补码均相同。
正确答案: 对
18. (判断题)
以下是定义类的正确代码。
class Demo {
    int num;
    static void dis() {
        System.out.println(num);
    }
}
正确答案: 错
19. (判断题)同一个工程里,同名的类,它们的包名必不相同。
正确答案: 对
20. (判断题)
以下是定义类的正确代码。
class A {
    double pi;
    pi = 3.14;
}
正确答案: 错

期中考试

一. 单选题(共13 题,26.0分)
   
1. (单选题,2.0分)以下不属于面向对象特性的是(   )
A. 过程
B. 多态
C. 继承
D. 封装
正确答案: A

2. (单选题,2.0分)以下说法正确的是(   )。
A. Java的一个源文件可以有多个public类//但最多一个
B. Java的每个源文件一定要有public类//可以没有
C. 一个Java源文件只能存放一个类//可以多个
D. 一个Java应用程序只能有一个主类
我的答案:D正确答案: D
3. (单选题,2.0分)以下属于合法标识符的是(   )。
A. true
B. "
C. $_
D. 3x
正确答案: C
4. (单选题,2.0分)
以下代码执行后输出的结果是(   )
public class MainClass {
    int a = 100;
    int fun(int a) {
        return this.a + a;
    }
    public static void main(String args[]) {
        MainClass mainClass = new MainClass();
        System.out.println(mainClass.fun(50));
    }
}
A. 150
B. 200
C. 50
D. 100
正确答案: A
5. (单选题,2.0分)表达式:0B0111 & 0B0111,的结果是(   )
A. 0B0000
B. 0B1000
C. 0B1111
D. 0B0111
正确答案: D
6. (单选题,2.0分)代码:System.out.println(1 + (2 + "3"));,执行后输出的结果是(   )
A. 6
B. 24
C. 33
D. 123
正确答案: D
7. (单选题,2.0分)
以下代码执行后输出的结果是(   )
public class MainClass {
    public static void main(String args[]) {
        MainClass mainClass1 = new MainClass();
        MainClass mainClass2 = new MainClass();
        System.out.println(mainClass1.equals(mainClass2));
    }
}
A. null
B. true
C. 程序报错终止
D. false
正确答案: D
8. (单选题,2.0分)Java编译器存在于(    )中。
A. JavaScript
B. JRE
C. JDK
D. JSP
正确答案: C
9. (单选题,2.0分)以下变量的定义错误的是(   )。
A. byte x = -128;
B. char x = 98;
C. double x = 100;
D. float x = 1.0;
正确答案: D
10. (单选题,2.0分)以下不属于JAVA版本的是(    )。
A. Java EE
B. Java SS
C. Java ME
D. Java SE
正确答案: B
11. (单选题,2.0分)数组的声明错误的是(   )
A. int arr[] = {1,2,3};
B. int arr[3];
C. int []arr;
D. int arr[];
正确答案: B
12. (单选题,2.0分)面向对象是一种把事物的属性和行为(   )的思想。
A. 过程化
B. 简单化
C. 抽象化
D. 实例化
正确答案: C
13. (单选题,2.0分)以下代码正确的是(   )。
A. System.out.printf(""");
B. System.out.println("%d", 123);
C. System.out.println(123);
D. System.out.printf("%d", 99.9);
正确答案: C
二. 填空题(共10 题,20.0分)
1. (填空题,2.0分)
以下代码中,如果想在if语句条件成立时跳出所有循环,应该在横线上填写的代码是:
Loop: for (int i = 0; i < 100; i++) {
  for (int j = 0; j < 200; j++) {
    if (j == 50) 
     ______________;
  }
}
正确答案:
(1) break Loop
2. (填空题,2.0分)java的八种基本数据类型中,___类型的精度最高。
正确答案:
(1) double
3. (填空题,2.0分)
在int前面加入修饰词,让num成为类变量。
class Demo {
    ____ int num;
}
正确答案:
(1) static
4. (填空题,2.0分)Integer封装类对应的基本数据类型是____。
正确答案:
(1) int
5. (填空题,2.0分)int x = (int) 0.5;   代码执行后x的值是____。
正确答案:
(1) 0
6. (填空题,2.0分)代码:System.out.println(13/7);执行后输出的结果是___。
正确答案:
(1) 1
7. (填空题,2.0分)
根据以下代码中fun()方法的调用,补全fun()方法的参数定义,不允许出现固定参数。
public class MainClass {
    static void fun(____x) {
    }
    public static void main(String args[]) {
        fun(1.0F, 2.0, 3.0, 4.0);
        fun(1.0F, 2.0, 3.0, 4.0, 5.0);
    }
}

正确答案:
(1) double...;double ...;double ... 
8. (填空题,2.0分)InputStream类的包名为:java.io,则在主类中引用该类的import语句写法是:____;。
正确答案:
(1) import java.io.InputStream;import java.io.*
答案解析:
9. (填空题,2.0分)设一个类的包名是com.test,则该类所在源文件第一行代码是___;。
正确答案:
(1) packge com.test
10. (填空题,2.0分)JRE中用于解释执行字节码文件的软件是___。
正确答案:
(1) jvm;Jvm;JVM;java虚拟机;Java虚拟机;JAVA虚拟机
三. 判断题(共11 题,22.0分)
1. (判断题,2.0分)Java是一门面向对象编程语言。
A. 对
B. 错
正确答案: 对
2. (判断题,2.0分)
以下是定义类的正确代码。
class A {
    double pi;
    pi = 3.14;
}
正确答案: 错
3. (判断题,2.0分)负数的原码、反码、补码均相同。
正确答案: 对
4. (判断题,2.0分)Java中注释的内容越多,编译后执行的程序运行效率越低。
正确答案: 错
5. (判断题,2.0分)System.out.println("Hello");语句执行会在字符串输出后进行换行。
正确答案: 对
6. (判断题,2.0分)switch语句中判断的参数类型不能是float和double
正确答案: 对
7. (判断题,2.0分)友好变量访问修饰符是friendly。
正确答案: 错
8. (判断题,2.0分)类方法不能调用实例变量。
正确答案: 对
9. (判断题,2.0分)final修饰的变量,声明之后它的值即不再修改。
正确答案: 对
10. (判断题,2.0分)在Java中,设保留2位小数的double型变量x,乘以100后的结果为y,则y小数点后的小数位一定全是0。
正确答案: 错
11. (判断题,2.0分)一个类最多只能拥有一个构造方法。
正确答案: 错
四. 其它(共2 题,32.0分)
1. (其它,15.0分)编写一个Java应用程序,提示用户从键盘输入一个四位整数,从控制台获取用户输入的数,分别输出该数对应的千位、百位、十位、个位。
我的答案:
import java.util.Scanner;

public class MainClass {
    public static void main(String [ ] args){
        Scanner s =new Scanner(System.in);
        System.out.println("输入一个四位整数");
        int num=s.nextint( );
        int num_bit=num% 10;
        int num_ten=(num/10)%10;
        int num_hundred=(num/100)%10;
        int nnnn=(num/1000)%10;
        System.out.print("个位:"+ num_bit+" ");
        System.out.print("十位:"num_ten+" ");
        System.out.print("百位:" num_hundred+" ");
        System.out.print("千位:" nnnn );

    }
}       

2. (其它,17.0分)创建一个Circle类,该类拥有一个半径变量,一个求圆周长的方法,一个求圆面积的方法,在主类中获取用户输入的半径后,创建Circle对象,输出圆的面积和周长。
我的答案:(未校准)
import java.util.Scanner;

import hello.Circle;
public class Circle {
	
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		Circle1 c = new Circle1();
		System.out.print("请输入圆半径:");
		c.radius = s.nextDouble();
		System.out.println("圆半径为:"+c.getRadius());
		System.out.println("圆周长为:"+c.findGirth());
		System.out.println("圆面积为:"+c.findArea());
	}

}

class Circle1{
	double radius;//半径
	
	public double findGirth() {//计算周长
		return 3.14*radius*2;
	}
	
	public double findArea() {//计算面积
		return 3.14*radius*radius;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}
	
}

1-3章作业

一. 单选题(共4题)
1. (单选题)Java是一门(    )语言。
A. 机器
B. 汇编
C. 高级
D. 低级
正确答案: C
2. (单选题)Java编译器对.java文件编译后生成的文件是(   )文件。
A. .apk
B. .class
C. .exe
D. .jdk
正确答案: B
3. (单选题)JVM存在于(   )中。
A. JDK
B. JRE
C. JSP
D. JavaScript
正确答案: B
4. (单选题)以下说法正确的是(   )。
A. 一个Java源文件只能存放一个类
B. 一个Java应用程序只能有一个主类
C. Java的一个源文件可以有多个public类
D. Java的每个源文件一定要有public类
正确答案: B
二. 多选题(共5题)
5. (多选题)以下代码正确的是(   )。
A. System.out.println("%d", 123);
B. System.out.printf(""");
C. System.out.printf("%c", 99);
D. System.out.println(123);
正确答案: CD
6. (多选题)以下不属于合法标识符的是(   )。
A. 中国
B. true
C. 2B铅笔
D. 买支2B铅笔
正确答案: BC
7. (多选题)以下代码错误的是(   )。
A.
int x = 123;

short y = x;

B. byte x = 127;
C. long x = 100.1;
D. char x = "x";
正确答案: ACD
8. (多选题)以下变量的定义正确的是(   )。
A. float x = 1.0;
B. byte x = -129;
C. double x = 100;
D. char x = 98;
正确答案: CD
9. (多选题)以下属于合法标识符的是(   )。
A. good人1个
B. False
C. $_$
D. 2people
正确答案: ABC
三. 填空题(共3题)
10. (填空题)A、B、C类均在单独的源文件中,A类中创建了B类对象,B类对象创建了C类对象,则单独编译B类的源文件后___类一定会被自动编译。
正确答案:
(1) C
11. (填空题)在变量定义的前面加上___关键字,它就会变成常量。
正确答案:
(1) final
12. (填空题)int x = (int) 200.999;   代码执行后x的值是____。
正确答案:
(1) 200
四. 判断题(共5题)
13. (判断题)在Java中,设保留2位小数的double型变量x,乘以100后的结果为y,则y小数点后的小数位一定全是0。
正确答案: 错
14. (判断题)“面向对象编程”指的是与对象面对面编写程序。
正确答案: 错
15. (判断题)使用代码   System.out.println(""");   可以输出一个双引号。
正确答案: 错
16. (判断题)Java中注释的内容越多,编译后执行的程序运行效率越低。
正确答案: 错
17. (判断题)Java是一门面向过程编程语言。
正确答案: 错

4-5章

一. 单选题(共7题)
1. (单选题)代码:System.out.println(1 + 2 + "3");,执行后输出的结果是(   )
A. 6
B. 24
C. 33
D. 123
正确答案: C
2. (单选题)
以下代码执行后输出的结果是(   )
public class MainClass {
    int a = 100;
    int fun(int a) {
        return this.a + a;
    }
    public static void main(String args[]) {
        MainClass mainClass = new MainClass();
        System.out.println(mainClass.fun(50));
    }
}
A. 50
B. 100
C. 150
D. 200
正确答案: C
3. (单选题)数组的声明错误的是(   )
A. int []arr;
B. int arr[3];
C. int arr[];
D. int arr[] = {1,2,3};
正确答案: B
4. (单选题)表达式:0B0111 | 0B0111,的结果是(   )
A. 0B0000
B. 0B0111
C. 0B1000
D. 0B1111
正确答案: B
5. (单选题)
以下代码执行后输出的结果是(   )
public class MainClass {
    public static void main(String args[]) {
        MainClass mainClass1 = new MainClass();
        MainClass mainClass2 = new MainClass();
        System.out.println(mainClass1.equals(mainClass2));
    }
}
A. true
B. false
C. null
D. 程序报错终止
正确答案: B
6. (单选题)关于访问权限的说法正确的是(   )
A. 类中的变量或方法一定要有访问权限修饰符
B. private修饰的变量,不能在定义变量的类外进行访问
C. A类与B类的包名不同,则B类不能访问A类的protected修饰的变量
D. friendly修饰的变量是类的友好变量
正确答案: B
7. (单选题)以下不属于面向对象特性的是(   )
A. 封装
B. 继承
C. 多态
D. 过程
正确答案: D
二. 填空题(共6题)
8. (填空题)InputStream类的包名为:java.io,则在主类中引用该类的import语句写法是:____;。
正确答案:
(1) import java.io.InputStream;import java.io.*
答案解析:
9. (填空题)float对应的封装类是Float,int对应的封装类是____。
正确答案:
(1) Integer
10. (填空题)
以下代码中,如果想在if语句条件成立时跳出所有循环,应该在横线上填写的代码是:
Loop: for (int i = 0; i < 100; i++) {
  for (int j = 0; j < 200; j++) {
    if (j == 50) 
     ______________;
  }
}
正确答案:
(1) break Loop
11. (填空题)
在int前面加入修饰词,让num成为类变量。
class Demo {
    ____ int num;
}

正确答案:
(1) static
12. (填空题)
根据以下代码中fun()方法的调用,补全fun()方法的参数定义,不允许出现固定参数。
public class MainClass {
    static void fun(____x) {
    }
    public static void main(String args[]) {
        fun(1.0F, 2.0, 3.0, 4.0);
        fun(1.0F, 2.0, 3.0, 4.0, 5.0);
    }
}
正确答案:
(1) double...;double ...;double ... ;
13. (填空题)Java中基本数据类型中,浮点型包括float和____。
正确答案:
(1) double
三. 判断题(共7题)
14. (判断题)设a是int型变量,则java中表示a大于1且小于2的关系表达式为:1<a<2.
正确答案: 错
15. (判断题)类的构造方法不允许有参数。
正确答案: 错
16. (判断题)switch语句中判断的参数类型不能是float和double
正确答案: 对
17. (判断题)正数的原码、反码、补码均相同。
正确答案: 对
18. (判断题)
以下是定义类的正确代码。
class Demo {
    int num;
    static void dis() {
        System.out.println(num);
    }
}
正确答案: 错
19. (判断题)同一个工程里,同名的类,它们的包名必不相同。
正确答案: 对
20. (判断题)
以下是定义类的正确代码。
class A {
    double pi;
    pi = 3.14;
}
正确答案: 错

实验

实验一

《Java面向对象程序设计》实验一  基本语法与面向对象编程
实验类型:    验证性       	实验课时:    2      	指导教师:           
姓    名: xxxx      	班    别:  2019通信工程2班    	班级序号:   38        
一、	实验目的
1.掌握Java的输入输出数据操作。
2.掌握Java的数组用法。
3.掌握Java的循环语句用法。
4.掌握Java的面向对象编程。
二、	实验报告提交要求
1.填写好报告头部的个人信息,将题目的源代码和运行截图插入到报告对应的位置,每一题的运行截图要求:第一行为java运行路径,第二行为个人信息(序号、班别、姓名),最后一行为结束提示,如下图所示。
 
2.将文件名命名为“班级序号-班别-姓名-《Java面向对象程序设计》实验一.docx”,如“01号-19通信1班-张三-《Java面向对象程序设计》实验一.docx”,班级序号参考学习通的通知,最后将word文件提交到学习通中对应的作业处。
三、	实验内容和要求
1.编写一个程序,提示用户输入圆的半径后计算其面积输出,可以接收和输出小数。
 
源代码:

import java.util.Scanner;

public class MainClass {
    public static void main(String [ ] args){
                System.out.println("38号-19通信2班-xxxx");
                System.out.println("请输入圆的半径:");
                double radius = new Scanner(System.in).nextDouble();
                System.out.print("面积:" + 3.14*radius*radius);
    }
}

2. 编写一个程序,提示用户输入数量n和n个数组成数组,分别输出以下内容:
(1)数组的最小值
(2)数组的最大值
(3)去除最大值和最小值后的数组
(4)去除最大值和最小值后的数组平均数,保留2位小数
提示:使用Arrays.sort();方法可以对数组进行排序,参数为要排序的数组。


 
源代码:

import java.util.Arrays;
import java.util.Scanner;

public class MainClass {
    public static void main(String [ ] args){
                System.out.println("38号-19通信2班-xxxx");
                System.out.print("请输入数组长度");
                int arrlong = new Scanner(System.in).nextInt();
                System.out.print("请输入数组内容");
                double[] arr;
                arr = new double[arrlong];
        for (int i = 0;i<arr.length;i++){
                    arr[i]=new Scanner(System.in).nextDouble();
                }
                Arrays.sort(arr);
        System.out.println("排序后遍历全部:");
        for (double i :arr){
            System.out.println(i);
        }
        System.out.println("----------------------");
                double min = arr[0];
                for (int i=1;i<arr.length;i++){
                    if (min>arr[i]){
                        min=arr[i];
                    }
                }
        System.out.println("最小值为:"+ min);

        double max = arr[0];
        for (int i=1;i<arr.length;i++){
            if (max<arr[i]){
                max=arr[i];
            }
        }
        System.out.println("max值为:"+ max);

        System.out.println("去除最大值和最小值后的数组为:");
        int arrlenfth =arr.length;
        double nomaxmin = arr[0];
        for (int i=0;i<arrlenfth -2;i++){
            nomaxmin=arr[i+1];
            System.out.println(nomaxmin);
        }
       // System.out.println("去除最大值和最小值后的数组平均数,保留2位小数");
        double nomaxminpj = arr[0];
        double sum = 0;
        for (int i=0;i<arrlenfth -2;i++){
            nomaxminpj=arr[i+1];
            sum =sum+nomaxminpj;
        }
        double jieguo;
        jieguo = sum/(arrlenfth-2);
        System.out.printf("去除最大值和最小值后的数组平均数,保留2位小数:  %.2f\n", jieguo);
    }
}


3. 编写一个程序,分别使用三种循环语句:for、while和do…while语句输出以下图形。
 
源代码:
public class MainClass {
    /*此函数为用for循环打印菱形*/
    public static void forDiamond (int num) {
        for (int i = 1; i <= 2 * num; i++) {
            for (int j = 1; j <= (i <= num ? i : 2 * num - i); j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
    /*此函数为用while循环打印菱形*/
    public static void whileDiamond (int num) {
        int i=1;
        while (i<=num-1)
        {
            int j=0;
            while (j<i)
            {
                System.out.print("*");
                j++;
            }
            System.out.println();
            i++;
        }
        while (i>=0)
        {
            int j=0;
            while (j<i)
            {
                System.out.print("*");
                j++;
            }
            System.out.println();
            i--;
        }
    }
    /*此函数为用do……while循环打印菱形*/
    public static void dowhileDiamond (int num) {
        int i=1;
        do {
            int j=0;
            while (j<i)
            {
                System.out.print("*");
                j++;
            }
            System.out.println();
            i++;
        }while (i<=num-1);
        do{
            int j=0;
            while (j<i)
            {
                System.out.print("*");
                j++;
            }
            System.out.println();
            i--;
        }while (i>=0);
    }

    public static void main(String[] args) {
        System.out.println("38号-19通信2班-xxxx\n");
        System.out.println("_________________________");
        System.out.println("_________________________");
        int num = 5;
        forDiamond(num);
        System.out.println("以上是用for循环打印菱形");
        System.out.println("_________________________");
        whileDiamond(num);
        System.out.println("以上是用while循环打印菱形");
        System.out.println("_________________________");
        dowhileDiamond(num);
        System.out.println("以上是用dowhile循环打印菱形");
        System.out.println("_________________________");
    }
}


4. 设计一个表示一卡通的Card类,类中的变量有卡号(String类)、姓名(String类)和余额(double型),在构造方法中设置三个参数,通过三个参数修改三个属性。Card类的另一个输出信息方法中实现输出三个属性信息。
设计一个主类,在主类的main方法中创建一个Card对象,在new创建对象时传入三个参数,并调用对象的输出信息方法。
 
Card类源代码:

    static class StudentCard{
        private String kahao; //卡号
        private String xuehao;//学号
        private String studentName;
        private String yue;//余额
        public StudentCard(String kh, String xh, String sn, float ye){
            try {
                this.kahao = String.valueOf((double)1/100).replaceAll("\\.", "");
            } catch (Exception e) {
                this.kahao = kh;
            }
            this.xuehao = xh;
            this.studentName = sn;
            this.yue = new DecimalFormat("0.00").format(ye);
        }
        public StudentCard(String kh, String xh, String sn){
            try {
                this.kahao = String.valueOf((double)1/100).replaceAll("\\.", "");
            } catch (Exception e) {
                this.kahao = kh;
            }
            this.xuehao = xh;
            this.studentName = sn;
        }
        public void print(){
            System.out.println("学生卡号:" + this.kahao+"\n学生学号:"+this.xuehao+"\n学生姓名:"+this.studentName+"\n学生余额:"+this.yue);
        }
        public String getKahao() {
            return kahao;
        }
        public void setKahao(String kahao) {
            this.kahao = kahao;
        }
        public String getXuehao() {
            return xuehao;
        }
        public void setXuehao(String xuehao) {
            this.xuehao = xuehao;
        }
        public String getYue() {
            return yue;
        }
        public void setYue(String yue) {
            this.yue = yue;
        }
        public String getStudentName() {
            return studentName;
        }
        public void setStudentName(String studentName) {
            this.studentName = studentName;
        }
    }
}



主类源代码:
import java.text.DecimalFormat;

public class MainClass {
    public static void main(String[] args) {
        System.out.println("38号-19通信2班-xxxx\n");
        System.out.println("_________________________");
        StudentCard sc = new StudentCard("101","201910110100","张三",98);
        sc.print();
        System.out.println("_________________________");
    }


实验2

《Java面向对象程序设计》实验二  继承与接口编程
实验类型:    综合性       	实验课时:    2      	指导教师:           
姓    名:     xxxx      	班    别:   19通信2班   班级序号: 38号  
一、	实验目的
1.掌握Java的继承编程。
2.掌握Java的接口编程。
二、	实验报告提交要求
1.填写好报告头部的个人信息,将题目的源代码和运行截图插入到报告对应的位置,每一题的运行截图要求:第一行为java运行路径,第二行为个人信息(序号、班别、姓名),最后一行为结束提示,如下图所示。
 
2.将文件名命名为“班级序号-班别-姓名-《Java面向对象程序设计》实验二.docx”,如“01号-19通信1班-张三-《Java面向对象程序设计》实验二.docx”,班级序号参考学习通的通知,最后将word文件提交到学习通中对应的作业处。
三、	实验内容和要求
1.以下代码中Quadrilateral为四边形抽象类,请尝试自定义一个平行四边形类Parallelogram继承Quadrilateral,在构造方法中传入底和高,重写求面积方法getArea(),通过底和高计算面积输出;再自定义一个正方形类Square继承Quadrilateral,在构造方法中传入底,重写求面积方法getArea(),分别创建Parallelogram和Square对象的上转型对象,接收用户控制输入的底和高后计算平行四边形和正方形的面积。
 
Quadrilateral类源代码:
abstract class Quadrilateral {
    double bottom;
    double height;
    abstract void getArea();
}

Parallelogram类源代码:
class Parallelogram extends Quadrilateral{
    Parallelogram(double bottomIn,double heightIn){
        bottom = bottomIn;
        height = heightIn;
    }

    @Override
    void getArea(){
        System.out.println("平行四边形面积:" +bottom*height);
    }
}

Square类源代码:

class Square extends Quadrilateral{
    Square(double bottomIn){
        bottom = bottomIn;
    }

    @Override
    void getArea(){
        System.out.println("正方形面积:" +bottom*bottom);
    }
}

主类源代码:
public class MainClass {
public static void main(String[] args) {
        System.out.println("38号-19通信2班-xxxx");
        System.out.print("请输入平行四边形的底和高,用逗号隔开:");
        String str = new Scanner(System.in).next();
        double bottom = Double.parseDouble(str.split(",")[0]);
        double height = Double.parseDouble(str.split(",")[1]);
        Quadrilateral quadrilateral = new Parallelogram(bottom, height);
        quadrilateral.getArea();
        System.out.print("请输入正方形边长:");
        String ky = new Scanner(System.in).next();
        bottom = Double.parseDouble(ky.split(",")[0]);
        Quadrilateral quadrilateral2 = new Square(bottom);
        quadrilateral2.getArea();
    }
}

2. 以下代码中Quadrilateral为四边形接口,请尝试自定义一个平行四边形类Parallelogram实现Quadrilateral接口,重写求面积方法getArea(),通过底和高计算面积输出;再自定义一个正方形类Square实现Quadrilateral接口,重写求面积方法getArea(),通过底计算面积。输出创建Quadrilateral的接口对象,接收用户控制输入的底和高后通过接口回调的方式计算平行四边形和正方形的面积。
 
Quadrilateral接口源代码:
interface Quadrilateral {
    void getArea(double bottom, double height);
}

Parallelogram类源代码:
class Parallelogram implements Quadrilateral{
    @Override
    public void getArea(double bottom, double height){
        System.out.println("平行四边形面积:" +bottom * height);
    }
}

Square类源代码:
class Square implements Quadrilateral{
    @Override
    public void getArea(double bottom, double height){
        System.out.println("正方形面积:" +bottom * bottom);
    }
}

主类源代码:
public class MainClass {
    public static void main(String[] args) {
        System.out.println("38号-19通信2班-xxxx");
        System.out.print("请输入平行四边形的底和高,用逗号隔开:");
        String str = new Scanner(System.in).next();
        double bottom = Double.parseDouble(str.split(",")[0]);
        double height = Double.parseDouble(str.split(",")[1]);
        Quadrilateral quadrilateral = new Parallelogram();
        quadrilateral.getArea(bottom,height);
        System.out.print("请输入正方形边长:");
        double ky = new Scanner(System.in).nextDouble();
        quadrilateral =new Square();
        quadrilateral.getArea(ky,height);
    }
}

实验3

《Java面向对象程序设计》实验三  文件操作和网络编程
实验类型:    综合性       	实验课时:    2      	指导教师:           
姓    名:    xxxx     	班    别:   19通信2班  班级序号: 38号        
一、	实验目的
1.掌握Java文件字符输入流和输入流编程。
2.掌握TCP服务器和客户端编程。
3.掌握Java Swing的JtextArea控件的使用。
二、	实验报告提交要求
1.填写好报告头部的个人信息,将题目的源代码和运行截图插入到报告对应的位置,每一题的运行截图要求:第一行为java运行路径,第二行为个人信息(序号、班别、姓名),再往下为界面图,如下图所示。
 
2.将文件名命名为“班级序号-班别-姓名-《Java面向对象程序设计》实验四.docx”,如“01号-19通信1班-张三-《Java面向对象程序设计》实验三.docx”,班级序号参考学习通的通知,最后将word文件提交到学习通中对应的作业处。
三、	实验内容和要求
1.编写一个程序,在第一行的JtextField输入文本点击写入按钮后,该文本可以追加到下方的JtextArea控件中的最后一行,同时追加到本地文件的最后一行。点击清空按钮JtextArea控件中所有内容将清空,点击读取按钮将本地文件的所有内容读取出来。
 
源代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

class WindowFile extends JFrame implements ActionListener {
    JLabel jLabelData;
    JTextField jTextFieldData;
    JButton jButtonWrite;
    JButton jButtonRead;
    JButton jButtonClear;
    JTextArea jTextAreaRecords;

    WindowFile() {
        init();
        setLayout(new FlowLayout());
        setBounds(100, 100, 300, 450);
        setTitle("文件操作");
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    void init() {
        jLabelData = new JLabel("待写入:");
        jTextFieldData = new JTextField(20);
        jButtonWrite = new JButton("写入");
        jButtonRead = new JButton("读取");
        jButtonClear = new JButton("清空");
        jTextAreaRecords = new JTextArea(20, 20);
        add(jLabelData);
        add(jTextFieldData);
        add(jButtonWrite);
        add(jButtonRead);
        add(jButtonClear);
        add(new JScrollPane(jTextAreaRecords), BorderLayout.CENTER);
        jButtonWrite.addActionListener(this);
        jButtonRead.addActionListener(this);
        jButtonClear.addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("写入")) {
            jTextAreaRecords.append(jTextFieldData.getText() + "\n");
            try {
                FileWriter out = new FileWriter("new.txt", true);
                String str = jTextFieldData.getText() + "\n";
                out.write(str);
                out.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        } else if (e.getActionCommand().equals("读取")) {
            try {
                FileReader in = new FileReader("new.txt");
                char[] charStr = new char[500];
                int length = in.read(charStr);
                String str = new String(charStr, 0, length);
                jTextAreaRecords.setText(str);
              //  System.out.println(str);
                in.close();
            } catch (IOException e2) {
                e2.printStackTrace();
            }


        } else if (e.getActionCommand().equals("清空")) {
            jTextAreaRecords.setText("");
        }
    }
}


public class MainClass {
    public static void main(String args[]) throws IOException {
        System.out.println("38号-19通信2班-xxxx");
        new WindowFile();
    }
}

2. 通过TCP编程和线程编程实现双向通信,服务器或客户端可连续或交替发送数据给对方。(整合Demo_TCP.txt和Demo_Thread.txt)
         
Server源代码:
//TCP服务器
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket server = null;
            try {
                //创建一个ServerSocket在端口4700监听客户请求
                server = new ServerSocket(4700);
            } catch (Exception e) {
                System.out.println("can not listen t" + e);//在屏幕上打印出错信息
            }
            Socket socket = null;
            try {
                System.out.println("等待连接....");
                //使用accept()阻塞等待客户端的请求,如果有请求则返回一个Socket对象,并继续执行
                socket = server.accept();
            } catch (Exception e) {
                System.out.println("Error" + e);
            }
            System.out.println("连接成功,等待客户端发送数据");
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        try {
                            System.out.println(is.readLine());
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
            while (true) {
                System.out.println("输入向客户端发送的字符串后回车发送");
                BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in));
                String strInput = keyIn.readLine(); //通过键盘输入一行字符串保存在strInput变量中
                if (strInput.equals("exit")) {
                    break;
                }
                os.println("Server:" + strInput);            //向客户端输出字符串
                os.flush();                    //刷新输出流,使Client马上接受该字符串
            }
            is.close();//关闭Socket输入流
            os.close(); //关闭Socket输出流
            socket.close();//关闭Socket
            server.close();//关闭ServerSocket
        }catch(Exception e){
            System.out.println("Error"+e);
        }

    }

}//服务器端程序结束

Client源代码:
//TCP客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try{
            Socket socket=new Socket("127.0.0.1",4700);//向本机的4700端口发出客户请求
            //由Socket对象得到输出流,并构造PrintWriter对象
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            //由Socket对象得到输入流,并构造相应的BufferedReader对象
            BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));

            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true) {
                        try {
                            System.out.println(is.readLine());//从Server读入一字符串,并打印到标准输出上
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
            while(true) {
                System.out.println("输入向服务器发送的字符串后回车发送");
                BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in));
                String strInput = keyIn.readLine(); //通过键盘输入一行字符串保存在strInput变量中
                if (strInput.equals("exit")) {
                    break;
                }

                os.println("Client:" + strInput);            //向客户端输出字符串
                os.flush();                    //刷新输出流,使Client马上接受该字符串

                System.out.println("发送成功,等待服务器回复数据");
            }


            is.close();//关闭Socket输入流
            os.close(); //关闭Socket输出流
            socket.close();//关闭Socket
        }catch(Exception e){
            System.out.println("Error"+e);//出错,打印出错信息
        }
    }

}//客户端程序结束


实验 4

《Java面向对象程序设计》实验四  Java Swing图形用户界面编程
实验类型:    综合性       	实验课时:    2      	指导教师:           
姓    名:      xxxx   	班    别:  19通信2班  	班级序号:   38        
一、	实验目的
1.掌握Java Swing的常用组件编程。
2.掌握Java Swing的事件处理编程。
3.掌握Java Swing的多窗口编程。
二、	实验报告提交要求
1.填写好报告头部的个人信息,将题目的源代码和运行截图插入到报告对应的位置,每一题的运行截图要求:第一行为java运行路径,第二行为个人信息(序号、班别、姓名),再往下为界面图,如下图所示。
 
2.将文件名命名为“班级序号-班别-姓名-《Java面向对象程序设计》实验四.docx”,如“01号-19通信1班-张三-《Java面向对象程序设计》实验四.docx”,班级序号参考学习通的通知,最后将word文件提交到学习通中对应的作业处。
三、	实验内容和要求
使用Java Swing编写一个图形用户界面程序,由登录界面类、主界面类和主类组成。各个类的要求如下:
1.登录界面类,输入自己的姓名,密码(学号),点击登录按钮验证信息正确后可打开主界面,同时将姓名传给主界面使用。如果信息输入错误则提示错误的类型,点击退出按钮可关闭程序。
 
 
源代码:

class WindowLogin extends JFrame implements ActionListener {
    JLabel jLabelName;
    JLabel jLabelPsw;
    JTextField jTextFieldName;
    JPasswordField jPasswordFieldPsw;
    JButton jButtonLogin;
    JButton jButtonExit;
    WindowLogin() {
        init();
        setLayout(new FlowLayout());//用来设置用户界面上的屏幕组件的格式布局
        setBounds(500,500,300,130);//大小
        setTitle("登录窗口");//标题
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口控制
        setVisible(true);//显示按钮

    }
    void init() {
        /* 管理控件 */
        jLabelName = new JLabel("姓名:");
        jTextFieldName = new JTextField(20);
        jLabelPsw = new JLabel("密码:");
        jPasswordFieldPsw = new JPasswordField(20);
        jButtonLogin = new JButton("登录");
        jButtonExit = new JButton("退出");
        add(jLabelName);
        add(jTextFieldName);
        add(jLabelPsw);
        add(jPasswordFieldPsw);
        add(jButtonLogin);
        add(jButtonExit);
        jButtonLogin.addActionListener(this);//添加按钮
        jButtonExit.addActionListener(this);
    }
    //操作
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("登录")) {
            String name = jTextFieldName.getText();
            String psw = new String(jPasswordFieldPsw.getPassword());

            if (name.equals("xxxx")) {
                if (psw.equals("123456")) {
                    new WindowMain(name);
                } else {
                    JOptionPane.showMessageDialog(null, "密码输入错误!");
                }
            } else {
                JOptionPane.showMessageDialog(null, "姓名输入错误!");
            }
        } else if (e.getActionCommand().equals("退出")) {
            System.exit(0);
        }
    }
}



2. 主界面类,将登录界面类传过来的姓名显示在第一行,输入两个加数后点击计算按钮可在等号右边显示计算结果,点击返回按钮关闭主界面窗口,显示登录界面窗口。
 
源代码:

class WindowMain extends JFrame implements ActionListener {
    JLabel jLabelName;
    JButton jButtonReturn;
    JButton jjisuan;
    JTextField jTextFieldNum1;
    JLabel jLabelPlus;
    JTextField jTextFieldNum2;
    JLabel jLabelResult;
    WindowMain(String name) {
        init(name);
        setLayout(new FlowLayout());
        setBounds(500,500,300,130);
        setTitle("主窗口");
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    void init(String name) {
        jLabelName = new JLabel(name +",欢迎您!请选择:");

        jjisuan = new JButton("开始计算");
        jButtonReturn = new JButton("返回");

        jTextFieldNum1 = new JTextField( 5 );
       jLabelPlus = new JLabel("+");
        jTextFieldNum2 = new JTextField( 5 );
        jLabelResult = new JLabel("=-?");


        add(jLabelName);
        add(jButtonReturn);
        add(jjisuan);
        add(jTextFieldNum1 );
        add( jLabelPlus);
        add( jTextFieldNum2);
        add( jLabelResult);
        jButtonReturn.addActionListener(this);
        jjisuan.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("开始计算")) {
            int num1= Integer.parseInt(jTextFieldNum1.getText());
            int num2= Integer.parseInt(jTextFieldNum1.getText());
            int result = num1+num2;
            jLabelResult.setText("="+result);
        } else if (e.getActionCommand().equals("返回")) {
            dispose();
        }
    }
}



3. 主类,在main方法中创建登录界面类对象,显示登录界面。
源代码:
public class MainClass {
    public static void main(String args[]) {
        System.out.println("38号-19通信2班-xxxx");
        new WindowLogin();
    }
}

计算

变量的定义 :

<类型名称><变量名称>; int price,amount;

变量名称:标识符:字母,数字,下划线,数字不能第一位,关键字不可用(紫色的)

public static void main (String [] args){
    System.out.println("hello");
    Scanner in = new Scanner(System.in);
   // int price=0,amount=100;//可以多个定义
    int price=0;
   // final int amount=100;//final 常量
    int amount=100;
    System.out.print("请输入票面");//print不换行输出
    amount = in.nextInt();    
    System.out.print("请输入金额");
    price = in.nextInt();//读入一个Int型数据,赋值,
    System.out.println(amount+"-"+price+"="+(amount-price));//先算括号里的
    
}

浮点数

两个整数运算的结果只能是整数,10和10.0是完全不同的数,10.0是浮点数.浮点数和整数一起运算会转化为浮点数

double 双精度浮点数 ,所有的整数都可以用浮点数表达,故in.nextInt();可以读取浮点数.in.nextDouble();

浮点数计算有误差:System.out.println(1.2-1.1)

精确计算或高速运算应该用整数计算

运算符优先级

Acrobat_pnwfRKVEnS

单目运算符 : 只有一个算子的运算符:+、-

System.out.println(a*-b) 会先计算负b

结合关系

一般自左向右

单目+-和赋值=自右向左

强制类型转换

(类型)值

int i = (int) (32/3.0)

int i =(int)a/b;是错误的,应该为int i = (int) (a/b); 强制类型转换的优先级高于四则运算

判断

		//初始化
		Scanner in = new Scanner(System.in);
		//读入投币金额
		System.out.print("请投币:"); 
		int amount = in.nextInt(); //打印车票
		System.out.println("****************");
		System.out.println("*Java 城际铁路专线 *");
		System.out.println("* 无指定座位票 *");
		System.out.println("* 票价:10元*");
		System.out.println("****************");
		//计算并打印找零
		System.out.println("找零:"+ (amount-10));

注释

//

/* */

关系运算

计算两个值之间的关系,所以叫做关系运算

运算符意义
==相等
!=不相等
>大于
>=大于或等于
<小于
<=小于或等于

•当两个值的关系符合关系运算符的预期时, 关系运算的结果为true,否则为false,数字和布尔值不能运算,布尔值之间没有大小关系

所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高

判断是否相等的==和!=的优先级比其他 的低,而连续的关系运算是从左到右进行 的

(a == b) > false

判断2个浮点数应该用:Math.abs(f1 - f2) < 0.00001

判断

if

if语句这一行结束的时候并没有表示语句结 束的“;”,而后面的赋值语句写在if的下一 行,并且缩进了,在这一行结束的时候有 一个表示语句结束的“;”。这表明这条赋值 语句是if语句的一部分,if语句拥有和控制 这条赋值语句,决定它是否要被执行。

if ( total > amount )
	total += amount+10;
if ( age < MINOR )
{
    System.out.println("年轻是美好的,");
}
int max;
if ( x > y )
max = x;
else
max = y;
System.out.println(max);

嵌套if

当if的条件满足或者不满足的时候要执行的语句也 可以是一条if或if-else语句,这就是嵌套的if语句
    else总是和最近的那个if匹配
if ( code == READY ){
	if ( count <20 ){
		System.out.println("一切正常\n”);
    }                         
}else{
    		System.out.println("继续等待 \n");
}

级联的if-else-if

if ( expl )
	st1;
else if ( exp2 )
	st2;
else
	st3;

最好输出时保持单一出口;

switch-case

switch (控制表达式,只能是整数结果){
    case 常量,可以是常数也可以是常量表达式:
        语句
        break;//没有break会一直执行下去
    case 常量:
    	语句
        break;
    default:
    	语句
        break;
}

流程图

  • 以特定的图形符号加上说明,表示算法的 图,称为流程图。
  • 圆角矩形表示“开始”与“结束”。
  • 矩形表示行动方案、普通工作环节用
  • 菱形表示问题判断或判定(审核/审批/评 审)环节
  • 用平行四边形表示输入输出
  • 箭头代表工作流方向

Acrobat_tau6kuFmAH

循环

while

while ( x > 0 ) {
	x = x/10;
	n = n+1;
}

do-while

do
(
	<循环体语句>
} while ( <循环条件>); //注意分号

随机数

每次召唤Math.random()就得到一个[0,1)范 围内的随机数

for

for (初始化;条件;单步动作){
}

int n = in.nextlnt();
int factor = 1;
for ( int i=l; i<=n; i=i+l )
{
	factor = factor * i;
)
System.out.println(factor);

for (;条件;)==while (条件)

空循环
for ( i=0; i<10; i++ )
	System.out.println(i);

for (i=0; i<n; i=i+1 )
•则循环的次数是n,而循环结束以后,i的值是n。

如果有固定次数,用for
如果必须执行一次,用do_while
其他情况用while

复合赋值

5个算术运算符,+ - * / %,可以和赋值运算符“=”结合起来,形成复合赋值运算符:“+=”、"-=","*=","/=","%="
    total += 5;
	total = total + 5;
注意两个运算符中间不要有空格
    total = sum+12;
	total = total(sum+12);

递增递减运算符

“++”和"--”是两个很特殊的运算符,它们 是单目运算符,这个算子还必须是变量。 这两个运算符分别叫做递增和递减运算符, 他们的作用就是给这个变量+1或者-1 ;

++和--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。

a的值是a加1以前的值,而a的值是加了1以后的值,无论哪个,a自己的值都加1

Acrobat_Dm8Tg4Euns

素数:只能被1和自己整除的数,不包括1

break vs continue

break:跳出循环

continue:跳过循环这一轮剩下的语句进入下一轮

Acrobat_rDns6DB4Ah

break 和 continue: 只能对它所在的那层循环做

标号与跳出循环

标号:
for(; ; ){
    for( ; ; ){
        for( ; ; ){
            break 标号;//默认对最近循环起作用,但加标号后,带标号的break和continue对那个循环起作用
        }
    }
}

goto

for( ; ; ){
    for(; ;){
        if(...)
            goto OUT;
    }
}
OUT: 
	.....

boolean 逻辑类型

关系运算的结果是一个逻辑值,true或false。这个值可以保存在一个对应的逻辑类型的变量中,这样的变量类型是boolean
• 布尔(Boolean)是为了纪念George Boole 对逻辑计算的贡献
• boolean flag = true;
• boolean tooHigh, tooSmall, tooRough;
• boolean done = false;

循环控制

逻辑运算

逻辑运算是对逻辑量进行的运算,只有逻 辑量可以参与运算

Acrobat_m2zKTloG7P

优先级

!>&&>||

!done && (count > MAX) 先算逻辑非,再算括号里的,再&&

Acrobat_Bq5b5HFgU2

所有的单目都优先于双目

数组

int[] numbers = new int[4];

<类型 >[]<名字>=new〈类型 >[元素个数];

元素个数必须是整数,元素个数必须给出,元素个数可以是变量

最小的下标是0,最大的下标是数组的元素个数-1

一旦创建,不能改变大小
•数组中的每个数据叫做元素

int x;
double sum = 0;
int cnt = 0;
int[ ] numbers = new int[100];//定义数组
x = in.nextInt();
while ( x != -1 )
{
    numbers[cnt] = x;//对数组中的元素赋值
    sum += x;
    cnt ++;
	x =in.nextInt();
}
if ( cnt >0 )
{
    double average = sum/cnt;
    for ( int i=0; i<cnt; i++ ) //遍历数组
    {
           if ( numbers[i] > average ) //使用数组中的值
    {
    	System.out.println(numbers[i]);
    }
  
}

//计算平均数
    
double sum = 0;
int cnt = in.nextInt();//读入
if ( cnt>0 ){
    int[] numbers = new int[cnt];//变量数组
    for ( int i=0; i<cnt; i++ ){
     numbers[i] = in.nextInt();
    sum += numbers[i];
    }
}

double average = sum/cnt;
for ( int i=0; i<cnt; i++ ){
    if ( numbers[i] > average ){
    System.out.println(numbers[i]);
    }
}

length

每个数组有一个内部成员length,会告诉你它的元素的数量

for (i=0; i<grade.length; ++i) 
    	sum += grade[i];

直接初始化数组

new创建的数组会得到默认的0值
• int[] scores = {87, 98, 69, 54, 65, 76, 87, 99);
• 直接用大括号给出数组的所有元素的初始值
• 不需要给出数组的大小,编译器替你数数
• 如何得知数组的大小? length!
    
  int [] a=new int[10];//创建数组a
  a[0]=5;//对a[0]赋值
  int[] b=a;//让b也指向a
  b[0]=16;//对ab的公共空间赋值
  System.out.println(a[0]);
//普通变量是独立拥有一个空间
//数组类似于头指针指向一片数组空间,若int[]b=a,即将b也指向a所在的数组空间.
                  
数组变量是数组的管理者而非数组本身
数组必须创建出来然后交给数组变量来管理
数组变量之间的赋值是管理权限的赋予
数组变量之间的比较是判断是否管理同一个数组

复制数组

必须遍历源数组将每个元素逐一拷贝给目的数组

遍历数组

for ( int i=0; i<data.length; i++ ){
    if ( x == data[i])
    {
        loc = i;
        break;
    }
}

通常都是使用for循环,让循环变量i从0到< 数组的length,这样 循环体内最大的i正好是数组最大的有效下标
常见错误是:
•循环结束条件是 <=数组长度,或;
•离开循环后,继续用i的值来做数组元素的下标!

for-each循环 用来遍历读出数组

for(<类型><变量>:<数组>){
    ...
}

for(int k : data){//表示定义一个int k来接收data数组的元素的值,从[0]开始,第一次k=data[0],第二轮循环k=data[1]...,只能读出,不能太过k赋值.且不知k对应数组的第几个位置
    if (x==k){
        found=true;
        break;
    }
}

二维数组

int[][] a = new int[3][5];通常理解为a是一个3行5列的矩阵

遍历:

for(i=0;i<3;i++){
    for (j=0;j<5;j++){
        a[i][j]=i*j;
    }
}

a[i][j]是一个 int
•表示第i行第j列上的单元

初始化:

int[] [] a={
    {1,2,3,4},
    {1,2,3}
}

对角线遍历

//检查对角线
if ( IgotResult ) {
numOfX = 0;
numOfO = 0;
for ( int i=0; i<SIZE; i++ )
{
if ( board[i][i] == 1 )
(
num0fX ++;
} else
{
num0f0 ++;
}
}
if ( num0fX == SIZE ||num0f0 == SIZE )
{
gotResult = true;
}
    }
    
//检查反对角线
if ( IgotResult )
num0fX = 0;
num0f0 = 0;
for ( int i=0; i<SIZE; i++ )
{
if ( board[i][SIZE-i-l] == 1 )
{
num0fX ++;
} else
{
num0f0 ++;
}
)
if ( num0fX == SIZE || num0f0 == SIZE )
(
gotResult = true;
)

使用对象

字符类型

单个的字符是一种特殊的类型:char
•用单引号表示的字符字面量:'a','1'
• Java使用Unicode来表示字符,可以表达包括汉字在内的多种文字

字符计算

char c = 'A';
c++;
System.out.println(c);
int i = 'Z' - 'A';
System.out.println(i);

一个字符加一个数字得到Unicode码表中那个数之后的字符
•两个字符的减,得到它们在表中的距离
char可以和int之间互相赋值,编码值与数值之间转换
char c='\u0041';//表示在Unicode编码中,十六进制0041的位置对应的字符

大小写转换

字母和数字在Unicode表中是顺序排列的
‘0’、’1’…’9’
大写字母和小写字母是分开排列的,并不在一起
‘a’-‘A’可以得到两段之间的距离,于是
a+‘a'-'A”可以把一个大写字母变成小写字母,而
a+‘A'-‘a’可以把一个小写字母变成大写字母

字符大小

字符可以被比较大小,依据是它们在Unicode表中的 编号
'0'—>9
'A'—>Z
'a'—>'z'
'Z' < 'a'

逃逸字符

用来表达无法印出来的控制字符或特殊字符,它由一 个反斜杠""开头,后面跟上另一个字符,这两个字符 合起来,组成了一个字符

Acrobat_kfgSxyiwbv

Acrobat_9wci35JNLZ

包裹类型

Acrobat_S53n2M6wEG

包裹类型的变量:

Integer i = 10;
Integer i = new Integer(10);
Integer i = new Integer(“10”);

获得包裹类型的值

Integer iii = 10;
•int i = iii;
•自动打包/解包

包裹类型的用处

获得该类型的最大最小值
•Integer.MIN_VALUE
•Integer.MAX_VALUE

. 运算符

当需要让一个类或对象做事情的时候,用. 运算符
•a.length
•lnteger.MAX_VALUE

Acrobat_ZOwa8ZMiAM

Math类

abs 绝对值
pow  幂次
randon  获得一个随机数
round  四舍五入

System.out.println(Math.abs(-12));
System.out.println(Math.randon()*100);

字符串

用双引号括起来的。个或多个字符就是一个字符串字面量 "hello"

字符串变量

String s;
•String是一个类,String的变量是对象的管 理者而非所有者
•就像数组变量是数组的管理者而非所有者一样

new =创建

String s = new String("a string“);
创建了一个String的对象
用“a string〃初始化这个对象
创建管理这个对象的变量s
让s管理这个对象

Acrobat_kbpRyWkxHi

初始化字符串变量

String s = "hello”;
•编译器帮你创建一个String类的对象交给s 来管理

字符串连接

•用加号(+)可以连接两个字符串
• "hello"+"world"—>"helloworld"
•当这个+的一边是字符串而另一边不是时,会将另一边表达为字符串然后做连接
•"i'm"+18—>"I'm 18" 

输入字符串

in.next();读入一个单词,单词的标志是空格
•空格包括空格、tab和换行
• in.nextLine();读入一整行

public static void main (String [] args){
    Scanner in =new Sanner(System.in);
    String s = new String("Hello")//创建一个空间string,并赋值,然后交给s 管理
    Syetem.out.println(s+(12+24));
}


s=in.nextLine();//读入整行

Acrobat_cA5I5Afmm6

比较两个String

if(input.equals("bye")) { // 比较内容是否相同
 ...
}

Strings应该用.equals来比较

== 是指是否指向同一个空间,equals是指内容是否相同

字符串操作

字符串是对象,对它的所有操作都是通过“.”这个运算 符来进行的字符串.操作

它表示对.左边的这个字符串做右边的那个操作

这里的字符串可以是变量也可以是常量

Acrobat_TV8ZnkRhpf

获得String的长度

Acrobat_952pfLiTeL

访问String里的字符

s.charAt(index)
•返回在index上的单个字符
•index 的范围是 0到length( ) - 1 .
•第一个字符的index是0,和数组一样
•但是不能用for-each循环来遍历字符串

得到子串

s1.substring(n)
•得到从n号位置到末尾的全部内容
s1.substring(b,e)
•得到从b号位置到e号位置之前的内容

寻找字符

Acrobat_Z3jOjUCBtQ

chrome_8ZlxRE84O2

其他String操作

s.startsWith(t)//这个字符串是否以另一个字符串开头
s.endsWith(t)//这个字符串是否以另一个字符串结尾
s.trim()//删除字符串两端空格
s.replace(c1,c2)//把字符串中所有的C1换成C2
s.toLowerCase()//所有字符串换成大写或小写
s.toUpperCase()//所有字符串换成大写或小写

不可变的String

所有的字符串都是不可变的,对它们的操作的结果都 是制造新的字符串出来
String s = “abc ”;
System.out.println(s.toUpperCase());
System.out.println(s);

在switch-case中使用字符串

switch ( s ) {
case “this”:
    ...
    break;
case “that”:
    ...
    break; 
}

函数(方法)

public static void sum(int a,int b){
    int i;
    int sum;
    sum=0;
    for(i=a;i<=b;i++){
        sum +=1;
    }
    System.out.println(a+"到"+b+"的和是"+sum);
}

PotPlayerMini_4gasaYGV6G

PotPlayerMini_h6ALJIWBSo

PotPlayerMini_gU08OCIXFD

可以这样调用函数

PotPlayerMini_WWPzb59J47

PotPlayerMini_2EHHqgmCa3

PotPlayerMini_omTi6Zyaxh

PotPlayerMini_Yn5iCiT8EA

PotPlayerMini_U3DmHUqurl

PotPlayerMini_KgxstG7KRX

PotPlayerMini_tqkTIK5aI0

PotPlayerMini_onvtKj6ucP

PotPlayerMini_eq2UE8TBu8

PotPlayerMini_hY7Z2Au2C7

类与对象

PotPlayerMini_oymrOkTneo

PotPlayerMini_eoNw8wF4GL

PotPlayerMini_Agk5a3Q8PH

PotPlayerMini_uGfR9SUm4g

PotPlayerMini_kKzz4JqiVh

PotPlayerMini_BrY8eVEINW

我个人理解是

类就是小米手机,数据:{屏幕,喇叭,摄像头,电池,等...},操作:{可以打电话,听音乐,拍照,看视频...}

但小米手机却有很多型号, 我的小米MAX就是一个对象,是小米手机的一个具体化. new 类 就是创建一台小米MAX,小米手机 我的手机 =new 小米手机 就是创建一个小米手机,并把这个小米手机给我管理. 就是创建对象.

Scanner in1 = new Scanner(System.in); 创建一个scanner对象,并调用该对象的system的in功能

PotPlayerMini_fWJrFKaFp7

PotPlayerMini_YXNpyYVgXM

PotPlayerMini_9xGxzb9bSN

PotPlayerMini_c0DdUYA9IK

PotPlayerMini_8UpyLKrqeY

构造函数:

PotPlayerMini_AdZifNtaCO

PotPlayerMini_VxwkBMaPqW

public class VendingMachine{//设计类
   int price;  //属性
   int balance= f();
   int total;
   
   //操作
   VendingMachine (){  //函数名和类名一样,无参数: 构造函数,在构造的时候会被自动调用的函数
   	total=0;
   }
   
   VendingMachine (int price){  //函数名和类名一样,有参数: 重载,在构造的时候会根据所给的参数的值来决定选择哪个函数
   	 this.price=price;
   }
   
   int f(){ //可以在类构建的时候调用自己的函数
    return 10;   
   }
   
   void setPrice(int price){
       this.price=price;//该对象的price被赋予调用该功能的值
   }
   
   void showPrompt(){
       System.out.println("Welcome");
   }
   
   void inertMoney(int amount){
       balance =balance +amount;
   }
   
   void showBalance(){
       System.out.println("this.balance");//show this的balance和show balance是一样的,this代表目前对象的...
   }
   
   void getFood(){
       if (balance>=price){
           System.out.println("Here you are,");
           balance = balance-price;
           total=total+price;
       }
   }
   
   public static void main (String[] args){
       VendingMachine vm =new VendingMachine();//在VendingMachine类中创建一个对象
       vm.showPrompt();//让该对象执行他本有的操作,每个对象有自己的ID, .操作的时候会进入他特有的空间(存放数据),而类的声明会主动链接到该空间,
       vm.showBalance();
       vm.inertMoney();
       vm.getFood();
   }
}

第六章重点 子类与继承

1、继承、父类、子类的定义,继承的内容和范围
2、继承的代码实现
3、Java单继承的特点
4、子类和父类在同一包中的继承性
5、成员变量的隐藏
6、final关键字的使用
7、上转型对象的定义
8、abstract类的特点

第七章重点 接口与实现

1、接口的定义和特点
2、接口体的实现
3、接口的代码实现
4、引入接口
5、理解接口
6、接口回调的实现

第八章重点 内部类和异常类

1、内部类的定义和特点
2、匿名类的定义和特点
3、断言语句的语法
4、try~catch~finally语句的使用
5、和接口有关的匿名类的特点

第九章重点 常用实用类

1、String的length()、startsWith()方法的使用
2、字符串比较:==和equals()的区别
3、Math类的常量
4、String和StringBuffer的区别和转换
5、字符串常量与字符常量的区别
6、StringBuffer的append()方法的使用

第十章重点 输入流和输出流

1、File类的定义
1、File类常用方法
2、FileOutputStream和FileWriter的构造方法中append参数的使用
3、缓冲字符输入/输出流读写一行文本的方法
4、字符与字节的区别

Q.E.D.


---------我大体上尊崇理性和意志,却也不菲薄情感和想象---------