题型一览
具体题目
看代码的题(来自兰老师)
1、阅读程序,分析代码和运行结果。
class Base {
public void method(){
System.out.print ("Base method");
}
}
class Child extends Base{
public void methodB(){
System.out.print ("Child methodB");
}
}
class Sample {
public static void main(String[] args) {
Base base= new Child();
base.methodB();
}
}
2.给出下列程序,运行结果为
public class Example extends Thread{
public void run(){
System.out.print("run1");
try{
Thread.sleep(100);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.print("run2");
}
public static void main(String[] args){
Example example=new Example();
example.run();
System.out.print("main");
}
}
3.阅读如下Java代码,在控制台输入"-1", 执行结果是( )。
public class Demo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入数字:");
try {
int num = input.nextInt();
if (num < 1 || num > 4) {
throw new Exception("必须在1-4之间!");
}
} catch (InputMismatchException e) {
System.out.println("InputMismatchException");
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
System.out.println(“finally”);
}
}
}
4、给出下列程序,运行结果为
public class Demo{
public static void main(String args[]){
int count=0;
int num=0;
for(int i=0;i<=100;i++,count++) {
num=num+i;
count = num;
}
System.out.println("num ="+num);
System.out.println("count="+count);
}
}
5、写出运行结果:
class ParentClass {
int a = 1;
static { System.out.println("父类静态语句块"); }
public ParentClass() {
System.out.println("这是父类的构造方法。"); }
}
class ChildClass extends ParentClass {
int a;
static { System.out.println("子类静态语句块"); }
public ChildClass() {
System.out.println("这是子类的构造方法。"); }
}
public class ConstructorTest {
public static void main(String[] args) {
ChildClass cc = new ChildClass();
System.out.println(cc.a);
}
}
分析:
构建子类对象时,会把父类里的成员变量和方法也加载进内存。所以会调用父类的静态代码块和构造器。
先访问静态代码块,父类优先
再访问构造器,子类构造器中默认有super(),故输出
先看子类父类中有无静态代码块,如果有优先执行静态代码块。
静态代码块>代码块>构造器
写代码的题(来自管老师)
1.抓鸭子
class Test10086{
public static void main(String[] args) {
System.out.println(digui(0));
for(int i=1;i<8;i++){
System.out.println("村子"+(i)+"-->卖了"+(digui(i-1) -digui(i))+"只鸭子");
}
}
public static int digui(int n){
if(n==7){
return 2;
}
return (digui(n+1)+1)*2;
}
}
2.文件交换
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
class Test10086{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name1 = input.next(),name2 = input.next(),switcher = "D:/Test10086.txt";
File f = new File(switcher);
if(!f.exists()){
try{
f.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
}
removeFile(name1,switcher);
removeFile(name2,name1);
removeFile(switcher,name2);
f.delete();
}
public static void removeFile(String name1,String name2){
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(name1);
fos = new FileOutputStream(name2);
int length = 0;
byte[] buf = new byte[1024];
while((length = fis.read(buf)) != -1){
fos.write(buf,0,length);
}
}catch (IOException e){
e.printStackTrace();
}finally{
try{
fis.close();
fos.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
3.内存模型
答案为:
4.火车票
书P390,火车售票,看书
5.文件追加
按照我的写法的话,这个和文件交换差不多。
就是把FileOutputStream(fileName);
改为FileOutputStream(fileName,true);
其他不变
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
class Test10086 {
public static void main(String[] args) {
new Test10086().appendFile("D:/a.txt","D:/b.txt");
}
public void appendFile(String fileName1, String fileName2) {
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(fileName1);
fos = new FileOutputStream(fileName2,true);
int length = 0;
byte[] buf = new byte[1024];
while((length = fis.read(buf))!=-1){
fos.write(buf,0,length);
}
}catch(IOException e){
e.printStackTrace();
}finally {
try{
fos.close();
fis.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
6.类和对象题
class Test10086 {
public static void main(String[] args) {
System.out.println(new Circle(2).area());
System.out.println(new Rectangle(2,4).area());
}
}
abstract class Shape{
double x;
double y;
public abstract double area();
}
class Circle extends Shape{
public Circle(double x){
this.x = x;
}
public double area() {
return Math.PI*x*x;
}
}
class Rectangle extends Shape{
public Rectangle(double x,double y){
this.x = x;
this.y = y;
}
public double area() {
return x*y;
}
}