简答题
一、 开发Java应用程序的主要步骤
- 写一个源文件:写Java代码,保存为后缀为 .java 的文件。
- 编译源文件:用命令行 javac 类名.java 。编译后生成对应的 .class 字节码文件。
- 运行:命令行:java 类名 。
二、 关于变量在不同位置的有效性
(1)局部变量:
-
形参(方法签名中定义的变量):作用域为在整个方法内。当类或对象调用某个方法时,系统会在该方法栈区为所有形参分配内存空间,并将实参的值赋给对应形参,这样就完成了形参的初始化。 -
方法局部变量:作用域为定义该变量的位置到方法结束。 -
代码块局部变量:作用域为定义该变量的位置到代码块结束。
除了形参外,局部变量都必须进行显式初始化
(2)成员变量:
- 类变量(被 static 关键字修饰): 作用域与这个 类 的生存周期相同。
- 实例变量:作用域与这个 实例(对象) 的生存周期相同。
成员变量与局部变量和名字相同时,成员变量会被隐藏起来,如果还想要使用成员变量,可以用 this.变量名 来调用变量。
三、类方法与实例方法
类方法: 类中被 static 修饰的方法,即可以通过类名直接调用,也可以通过实例名调用。类方法内只能调用类变量。
实例方法: 类中没有被 static 修饰的方法,只能通过实例名调用。实例方法中既可以调用类变量,也可以调用实列变量。
四、面向对象的三大特性
封装:也称为信息隐藏,是将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
继承:基于已存在的类构造一个新类。
多态:多态分为方法的多态(即方法重载)与继承的多态。 方法的多态即:相同的方法名,传给它不同数量或者不同类型的参数,会产生不同的行为。(方法重载) 继承的多态:不同的对象调用同一个方法会产生不同的行为。(向上转型)
五、内部类与外嵌类的区别
定义在一个类内部的类叫内部类,包含内部类的类称为外嵌类。 内部类分为普通内部类,静态内部类,匿名内部类,局部内部类。
六、String类常用方法
返回类型 方法名 作用
boolean equals(String str) 判断两个字符串的内容是否一模一样
int length() 得到该字符串的字符个数
boolean startsWith(String str) 判断一个字符串是否以指定的内容开头
boolean endsWith(String str) 判断一个字符串是否以指定的内容结尾
String toUpperCase() 将一个字符串全部转换成大写
String toLowerCase() 将一个字符串全部转换成小写
equals方法非常重要!!!
七、String 、StringBuffer 、 StringBuilder 三者区别
String 对象代表一个字符序列不可变的字符串。
StringBuffer 对象代表一个字符序列可变的字符串。线程安全。
StringBuilder 对象代表一个字符序列可变的字符串。线程不安全。
(具体解释:String 、StringBuffer 、 StringBuilder 三者区别)
八、子类与父类不在同一包中的继承性
子类与父类不在同一包中,子类只能继承父类中被 public 、 protected 修饰的成员变量与方法。 子类所继承的成员变量和方法的访问权限是不变的;
九、抽象类与抽象方法
抽象类: (1)抽象类只能作为其他类的基类,它不能直接实例化,对抽象类不能使用new 操作符。 (2)抽象类中可以包含抽象成员,但非抽象类中不可以。 (3)如果一个非抽象类从抽象类中派生,则其必须通过覆盖来实现所有继承而来的抽象成员。
抽象方法: (1)抽象方法必须声明在抽象类或接口中。 (2)抽象方法只声明了一个新方法,但不提供该方法的实现,由于抽象方法不提供任何实际实现,因此抽象方法没有方法体。 (3)声明抽象方法时,不能使用 static 和 private 修饰符。 (4)当从抽象类派生一个非抽象类时,需要在非抽象类中重写抽象方法,以提供具体的实现。
编程题:
1.要求写出 num 以内的完数。
public class WanShu {
public static void main(String[] args) {
WanShu ws = new WanShu();
ws.getWanShu(1000);
}
void getWanShu(int num) {
for(int i = 2 ;i<num; i++) {
int sum = 0;
for(int j = 1;j<i;j++) {
if(i%j==0) sum += j;
}
if(sum == i) System.out.println(sum);
}
}
}
2.用面向对象的方法生成 矩形/三角形/梯形类。
(1)矩形类
class Rectangle {
double height,width;
Rectangle(double height,double width) {
this.height = height;
this.width = width;
}
double getArea() {
return height * width;
}
}
(2)三角形类
class Triangle {
double a,b,c;
Triangle(double side1,double side2,double side3) {
a = side1;
b = side2;
c = side3;
}
void getArea() {
if((a+b>c || a+c>b || b+c>a)&&a!=0&&b!=0&&c!=0) {
double p = (a+b+c)/2;
System.out.println(Math.sqrt(p*(p-a)*(p-b)*(p-c)));
}
else
System.out.println("不能构成三角形,无法求面积");
}
}
(3)梯形类
class Trapezoid {
double above,bottom,height;
Trapezoid(double above,double bottom,double height) {
this.above = above;
this.bottom = bottom;
this.height = height;
}
double getArea() {
return (above + bottom) * height /2.0;
}
}
3.IO流(A卷不考第十章,也就是说不考IO流) 复制文件(这只是个示例,考试不一定是这个题,后续再补充)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String args[]) {
int b = 0;
try {
FileInputStream in = new FileInputStream("d:\\QQQ.txt");
FileOutputStream out = new FileOutputStream("d:\\PPP.txt");
while ((b = in.read())!=-1) {
out.write(b);
}
in.close();
out.close();
} catch (FileNotFoundException f) {
f.printStackTrace();
System.out.println("找不到指定文件");
System.exit(-1);
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件复制错误");
System.exit(-1);
}
System.out.println("文件已复制");
}
}
4.生成n个随机数,分别输出大于num与小于num的数的个数。
import java.util.Random;
public class RandomTest {
int count;
RandomTest(int n) {
count = n;
}
void random(int num) {
Random r = new Random();
int big = 0,small = 0;
for(int i = 0;i<count;i++) {
if(r.nextInt(10)>num) big++;
else small++;
}
System.out.println("大于"+num+"的数的个数为:"+big+"\n小于"+num+"的数的个数为:"+small);
}
}
5.GUI
重点: 布局:GridLayout 多个标签:Lable 多个文本框:JTextField
import javax.swing.*;
import java.awt.*;
public class TestFrame {
public static void main(String[] args) {
JFrame window = new JFrame("注册账号");
window.setSize(200,100);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridLayout(3,2,3,3));
window.add(new Label("name:"));
window.add(new JTextField());
window.add(new Label("sex:"));
window.add(new JTextField());
window.add(new Label("password:"));
window.add(new JTextField());
window.setVisible(true);
}
}
效果:
6.求圆面积(ZHI NENG画的重点)
public class TestCircle {
private double radius;
private double area;
TestCircle(double r) {
radius = r;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
area = Math.PI*radius*radius;
return area;
}
}
public class TestAA {
public static void main(String[] args) {
TestCircle tc = new TestCircle(5);
System.out.format("半径为 %f 的圆的面积为: %.3f",tc.getRadius(),tc.getArea());
}
}
7.求圆锥体积 版本1(特点:涉及对象之间的组合)
public class Circle {
private double radius;
private double area;
Circle(double r) {
radius = r;
}
double getRadius() {
return radius;
}
double getArea() {
area = Math.PI * radius * radius;
return area;
}
}
public class Circular {
Circle circle;
private double volume;
private double height;
Circular(Circle c,double h) {
circle = c;
height = h;
}
public double getVolume() {
volume = circle.getArea()*height/3;
return volume;
}
}
import java.util.Scanner;
public class TestC {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入:圆锥底面圆的半径 圆锥的高");
double r = sc.nextDouble();
double h = sc.nextDouble();
Circle circle = new Circle(r);
Circular circular = new Circular(circle,h);
System.out.format("该圆锥体积: %.3f",circular.getVolume());
}
}
请依次输入:圆锥底面圆的半径 圆锥的高
3 5
该圆锥体积: 47.124
Process finished with exit code 0
版本2(特点:面向接口编程)
interface GetArea {
public abstract double getArea();
}
interface GetVolume {
public abstract double getVolume();
}
public class CircleT implements GetArea{
private double radius;
private double area;
CircleT(double radius) {
this.radius = radius;
}
public double getArea() {
area = Math.PI*radius*radius;
return area;
}
}
public class CircularT implements GetVolume,GetArea{
private double height;
private double volume;
CircleT circleT;
CircularT(double r,double h) {
circleT = new CircleT(r);
height = h;
}
public double getVolume() {
volume = circleT.getArea()*height/3;
return volume;
}
public double getArea() {
return circleT.getArea();
}
}
public class TestCC {
public static void main(String[] args) {
CircleT circleT = new CircleT(5);
CircularT circularT = new CircularT(6,10);
System.out.format("半径为5的圆的面积为:%.3f\n\n",circleT.getArea());
System.out.format("底面圆半径为6,高为10的圆锥的\n体积:%.3f\n底面圆面积:%.3f\n",circularT.getArea(),circularT.getVolume());
}
}
半径为5的圆的面积为:78.540
底面圆半径为6,高为10的圆锥的
体积:113.097
底面圆面积:376.991
Process finished with exit code 0
|