Java基础入门第三版部分编译题

第一章(有用的话,点个免费的赞吧,我也想快乐一下)

1.如何用记事本写一个Hello World程序,在命令窗口编译和运行,并输出结果。

HelloWorld.java

 1 public class HelloWorld {

 2      public static void main(String[] args) {

 3          System.out.println("这是第一个Java程序!");

 4      }

 5  }

第二章

1. 编写程序,计算1+3+…+99的值,要求如下:

(1)使用循环语句实现1~99的遍历
(2)在遍历过程中,通过条件判断当前的数是否为奇数,如果是就累加,否则不加。

  1. public class getSum {
  2.     public static void main(String[] args) {
  3.         int sum = 0;
  4.         for (int i = 1; i < 100; i++) {
  5.             if (i % 2 != 0)
  6.                 sum += i;
  7.         }
  8.         System.out.println(sum);
  9.     }
  10. }

 2.使用do… while循环语句计算正数5的阶乘。

  1. public class Test {
  2.     public static void main(String[] args) {
  3.         int i = 1;
  4.         long sum = 1;
  5.         do {
  6.              sum *= i;
  7.              i++;
  8.         } while (i <= 5);
  9.               System.out.println(sum);
  10.     }
  11. }

第三章

某公司正在进行招聘工作,被招聘人员需要填写个人信息,编写个人简历的封装类Resume,并编写测试。Resume类图及输出效果

Example.java

class Resume {

    private String name;

    private String sex;

    private int age;

    public Resume(){

    }

    public Resume(String name,String sex,int age){

        this.name = name;

        this.sex = sex;

        this.age = age;

    }

    public String getName(){

        return name;

    }

    public String getSex(){

        return sex;

    }

    public int getAge(){

        return age;

    }

    public void introduce(){

       System.out.println("姓名"+this.getName()+"\n性别"+this.getSex()+"\n年龄"+this.getAge());

    }

}

public class Example{

     public static void main(String[] args){

         Resume re = new Resume("李四","",20);

         re.introduce();

     }

}

第四章
 某公司的员工分为5类,每类员工都有相应的封装类,这5个类的信息如下。
(1) Emplovee:这是所有员工的父类。

①属性:员工的姓名、员工的生日月份
②方法: Salary int month)根据参数月份确定工资。如果该月员工过生日,则公司会额外发放100元。
(2) Salariedemployee: Employee的子类,拿固定工资的员工。
属性:月薪
(3) Hourlyemployee: Employee的子类,按小时拿工资的员工,每月工作超出160h部分按照1.5倍工资发放。
属性:每小时的工资、每月工作的小时数。
(4) Salesemployee: Employee的子类,销售人员,工资由月销售额和提成率决定。
属性:月销售额、提成率。
(5) Baseplussalesemploye: Salesemployee的子类,有固定底薪的销售人员,工资底薪加上销售提成。
属性:底薪。
本题要求根据上述员工分类(编写一个程序,实现以下功能:
(1)创建 Employee,分别创建若干不同的 Employee对象,并打印某个用
(2)每个类都完全封装,不允许有非私有化属性。

Employee.java

abstract class Employee{

    private String name;                     //定义姓名name并私有化属性

    private int month;                       //定义生日月份month并私有化属性

    public Employee(){}                       //无参构造器

    public Employee(String name,int month){  //有参构造方法

        this.name = name;    //给属性name初始化赋值

        this.month = month;  //给属性month初始化赋值

    }

    //获取属性name的方法

    public String getName(){

        return name;   //返回name属性

    }

    //获取属性month的方法

    public int getMonth(){

        return month;  //返回month属性

    }

    //给属性name赋初始值

    public void setName(String name){

        this.name = name;  //本类中的属性name

    }

    //给属性month赋初始值

    public void setMonth(int month){

        this.month = month; //本类中的属性month

    }

    //创建一个方法getSalary()用来计算工资,参数month是月份,如果当月是员工生日,奖        100

    public double getSalary(int month){

        double salary = 0;      //定义工资变量

        //判断当前月份是否是员     工的生日月份,如果是奖励100

        if(this.month == month){

            salary = salary + 100;         

            return salary;    //返回工资salary

        }

    }

}

SalariedEmployee.java

class SalariedEmployee extends Employee{

    private double monthSalary;           //封装monthSalary属性

    public SalariedEmployee(){}           //无参构造方法

    //有参构造方法   参数  姓名 生日月份  月薪

    public SalariedEmployee(String name,int month,double monthSalary){

        super(name,month);                  //调用父类有参构造方法

        this.monthSalary = monthSalary;   //为属性monthSalary初始化赋值

    }

    //获取monthSalary的值

        public double getMonthSalary(){

        return monthSalary;

    }

    //monthSalary赋值

    public void setMonthSalary(double monthSalary){

        this.monthSalary = monthSalary;

    }

    //覆盖父类中的方法

    public double getSalary(int month){

        double salary = monthSalary+super.getSalary(month);   //定义工资变量

        return salary;   

    }

}

HourlyEmployee.java

class HourlyEmployee extends Employee{

    private double hourlySalary; //定义属性hourlySalary每小时的工资

    private int hours; //定义属性hours每月工作的小时数

    public HourlyEmployee(){}    //无参构造方法

    //有参构造方法  参数 姓名 生日月份  每小时的工资 每月工作的小时数 

    public HourlyEmployee(String name,int month,double hourlySalary,int             hours){

        super(name,month);                    //调用父类有参构造方法    

        this.hourlySalary = hourlySalary ; //为属性hourlySalary初始化赋值

        this.hours = hours;                //为属性hours 初始化赋值

    }

    public double getHourlySalary(){    //获取hourlySalary的值

        return hourlySalary;

    }

    public int getHours(){             //获取hours的值

        return hours;

    }

    //定义set方法设置hourlySalary  hours的值

    public void setHourlySalary(double hourlySalary){

        this.hourlySalary =hourlySalary;

    }

    public void setHourly(int hours){

        this.hours = hours;

    }

    //覆盖父类方法

    public double getSalary(int month){

        if(hours < 0){      //如果工作小时数小于输出数据错误

        System.out.println("数据错误");

        return 0;

        }  

        //小于160个小时的 按照每个月的工作小时数乘以每小时的工资

        else if(hours <= 160)

            return hourlySalary*hours+super.getSalary(month);

        //超出160个小时的小时数 按照1.5倍计算    

        else return hourlySalary*160+hourlySalary*1.5*(hours-                     160)+super.getSalary(month);

    }

}

SalesEmployee.java

class SalesEmployee extends Employee{

    private double sales ; //定义销售额sales

    private double rate; //定义提成率rate

    public SalesEmployee(){}

    public SalesEmployee(String name,int month,double sales,double rate){

        super(name,month);

        this.sales = sales;

        this.rate = rate;

    }

    public double getSales(){

        return sales;

    }

    public double getRate(){

        return rate;

    }

    public void setSales(double sales){

        this.sales = sales;

    }

    public void setRate(double rate){

        this.rate = rate;

    }

    public double getSalary(int month){

        return this.getSales()*(1+this.getRate())+super.getSalary(month);

    }

}

BasePlusSalesEmployee.java

class BasePlusSalesEmployee extends SalesEmployee{

    private double baseSalary; //定义基础工资baseSalary

    //无参构造方法

    public BasePlusSalesEmployee(){}

    //有参构造方法

    public BasePlusSalesEmployee(String name,int month,double sales,double         rate,double baseSalary){

        super(name,month,sales,rate);

        this.baseSalary = baseSalary;

    }

    //get/set方法对私有属性的调用和设置

    public double gatBaseSalary(){

        return baseSalary;

    }

    public void setBaseSalary(){

        this.baseSalary = baseSalary;

    }

    public double getSalary(int month){

        return baseSalary+super.getSalary(month);

    }

}

Test.java

//定义一个测试类

public class Test{

    public static void main(String[] args){

    //声明一个Employee类型的数组,并创建不同子类型的对象

    Employee[] employee = {new SalariedEmployee(“张三”,1,6000),new            HourlyEmployee(“李 四”,2,50,180),new SalesEmployee(“王                   五”,3,6500,0.15),new BasePlusSalesEmployee(“赵 六”,4,5000,0.15,2000)};

    //打印每个员工的工资

    for(int i = 0; i < employee.length ;i++)

        System.out.println(Math.round(employee[i].getSalary(10)));

    }

}   

第6章

五、1.每次随机生成10个0~100的随机正整数。
2.计算从今天算起100天以后是几月几日,并格式化成×××X年X月×日的形式打印出来。
提示:
(1)调用Calendar类的add()方法计算100天后的日期。
(2)调用Calendar类的getTime()方法返回Date类型的对象。
(3)使用FULL格式的DateFormat对象,调用format()方法格式化Date对象。

1.

Example.java

  1. import java.util.Random;
  2. public class Example {
  3.     public static void main(String[] args) {
  4.         for(int i=0;i<10;i++){
  5.             System.out.println(new Random().nextInt(100));
  6.         }
  7.     }
  8. }

2.

Test.java

  1. import java.text.DateFormat;
  2. import java.util.Calendar;
  3. import java.util.Date;
  4. public class Test {
  5.     public static void main(String[] args) {
  6.         Calendar calendar = Calendar.getInstance();
  7.         calendar.add(Calendar.DATE, 100);
  8.         Date date = calendar.getTime();
  9.         DateFormat format = DateFormat.getDateInstance(DateFormat.FULL);
  10.         String string = format.format(date);
  11.         System.out.println(string);
  12.     }
  13. }

第七章


1.编写程序,向ArmsList集合中添加元素,然后遍历并输出这些元素。

2.请发照下列要求编写程序。
(1)写一个Student类,包含name和age属性,提供有参构造方法。
(2)在Snudent 类中,重写 toString()方法,输出age和name的值。
(3)在Student类中,重写hashCode()和equals()方法。
.hshCode()的返回值是name的哈希值与age的和。
.equals()判断对象的name和age是否相同,相同则返回true,不同则返回false。

4)编写一个测试类,创建一个HashSet<Student>对象hs,向hs中添加多个sat对象,假设有两个Student对象相等。输出HashSet集合,观察Student对象是否添加成功。

                         

                               Example.java

  1. public class Example {
  2.     public static void main(String[] args) {
  3.         ArrayList list = new ArrayList<>();
  4.         list.add("a");
  5.         list.add("b");
  6.         list.add("c");
  7.         list.add("a");
  8.         for(Iterator it = list.iterator();it.hasNext();){
  9.             System.out.println(it.next());
  10.         }
  11.     }
  12. }

2.

Test.java

  1. import java.util.*;
  2. class Student {
  3.     private int age;
  4.     private String name;
  5.     public Student(int age, String name) {
  6.         this.age = age;
  7.         this.name = name;
  8.     }
  9.     public String toString() {
  10.         return age + ":" + name;
  11.     }
  12.     public int hashCode() {
  13.         return name.hashCode() + age;
  14.     }
  15.     public boolean equals(Object obj) {
  16.         if (this == obj)
  17.             return true;
  18.         if (!(obj instanceof Student))
  19.             return false;
  20.         Student stu = (Student) obj;
  21.         return this.name.equals(stu.name) && this.age == stu.age;
  22.     }
  23. }
  24. public class Test {
  25.     public static void main(String[] args) {
  26.         HashSet<Student> hs = new HashSet<Student>();
  27.         hs.add(new Student(18, "zhangsan"));
  28.         hs.add(new Student(20, "lisa"));
  29.         hs.add(new Student(20, "lisa"));
  30.         System.out.print

1.Java是一种面向对象的语言

2.Java语言具有的特点:简单,面向对象,跨平台性,安全性,支持多线程,分布性

3.将Java源文件编译为.class文件的是javac命令。

4.Java语言的跨平台特点是由Java虚拟机保证的。

5..Java程序的运行环境为JRE

1.Java程序代码必须放在一个类中,类使用class关键词定义。

2.Java中注释有三类,分别是单行注释,多行注释,文档注释

3.在Java中,int类型所占存储空间为4 字节。

4.数组是一个容器,最小值是0

5.

1.面向对象的三大特征是封装,继承,多态。

2. 针对类、成员方法和属性,Java提供了4种访问控制权限,分别是private、     ____default____protectedpublic。3.静态方法必须使用___static_____关键字来修饰。4.类的封装是指在定义一个类时,将类中的属性私有化,即使用___private_____关键字修 饰。5.在Java中解决成员变量与局部变量名称冲突时,可以使用__this______关键字。

3.静态方法必须使用___static_____关键字来修饰。

4.类的封装是指在定义一个类时,将类中的属性私有化,即使用___private_____关键字修饰。5.在Java中解决成员变量与局部变量名称冲突时,可以使用__this______关键字。

1.在面向对象中,类之间共掌属性和操作的机制称为继承

2.在继承关系中,子类会自动继承父类中的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写

3.final关键字可用于修饰类、变量和方法,它有“无法改变的”或者“最终”的含义。

4.一个类如果要实现一个接口,可以使用关键字implements

5.一个类如果要实现一个接口,那么它就需要重写接口中定义的全部方法,否则该类就必须定义成抽象类

6.如果子类想引用父类的成员,可以使用关键字surper

1 RuntimeException类及其子类用于表示运行时异常。

2.异常分为两种,分别是运行时异常编译时异常。

3.thow关键字用于在方法中声明抛出异常的实例对象。

4.如果一个方法要抛出多个异常,可以使用throws关键字,多个异常之间用逗号隔开。

5.自定义异常需要继承Exception。

1.在Java中定义了3个类,用来封装对字符串的操作,分别是String,StringBuffer和StringBuilder。

2. Java中用于获取String字符串长度的方法是Length()

3. Java中用于将日期格式化为字符串的类是DateFormat

4. Java中用于产生随机数的类是位于java.util包中的Random

5.已知sb为StringBuffer的一个实例,且sb.toString()的值为“abcde”,则执行reverse()后,sb.toString()的值为edcba

1. Collection是所有单列集合的父接口,它定义了单列集合(List和Sat)通用的一些方法。

2.使用Iterator遍历集合时,首先需要调用hashNext()方法判断是否存在下一个元素

若存在下一个元素,则调用next()方法取出该元素

3.如果要对TreeSot集合中的对象进行排序,必须实现Comparable接口。

4.Map集合中的元素都是成对出现的,并且都是以Key(键)、Value(值)的映射关系存在的。

5. ArrayList内部封装了一个长度可变的数组

1.泛型的作用是支持类型参数化 。型类 型 泛型

2.泛型可以用在类、接口和方法的定义中,分别称为泛型类,泛型接口泛型方法。

3.在Jaya程序中,经常会有参数类型或返回值类型不确定的方法,这种方法在Java中统称为泛型方法

4.泛型接口的实现类有两种定义方式,一种是直接接口中明确地给出泛型类型,另一种是直接在实现后声明泛型。

1.反射机制的优点是可以实现动态创建对象和编译。

2.如果想通过Class类实例化其他类的对象,则可以使用newInstance()方法,但是必须保证

被实例化的类中存在一个无参构造方法。

3.通过反射可以得到二个类中的所有方法,需要用到java.lang.reflect包中的Method

4.在反射操作中,通过getDeclareFieds()可以获得类的信息。 方法可以取得本类中的全部属性。

5.Java 虚拟机在加载.class文件时会产生一个Class对象代表文件,从该对象中可以获得类的信息。

1.Java中的I/O流按照传输数据的不同可分为字节流字符流

2.java.io包中可以用于从文件中直接读取字符的类是Reader

3.I/O系统提供了两个带缓冲的字节流,分别是 BufferedInputStreamBufferedOutputStream.

4.在JDK中提供了两个可以将字节流转携为字符流的类,分别是InputStreamReaderOutputStreamWriter.

5.java.io.FileOutputStream是OutputStream的子类,它是操作文件的字节输出流。

1. JDBC驱动程序管理器专门负责注册特定的JDBC驱动程序,主要通过 java.sql.DriverManager类实现。

2.在编写JDBC应用程序时,必须要把指定数据库驱动程序或类库加载到classpath中。

3Statement接口的executeUpdate(String sql)方法用于执行SQL中的ISERT,update和DELETE语句。

4. PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。

5. ResultSet接口中定义了大量的getXxx()方法,可以使用字段的索引获取指定的数据,字段的索引是从1 开始编号的。

1.实现多线程的两种方式是继承Thread 类和实现Runnable接口。

2.线程的整个生命周期分为5个阶段,分别是新建状态(New)、就绪状态(Runnable)、运行状态(Running),阻塞状态和死亡状态。

3.在Thread类中,提供了start()方法用于启动新线程。

方法用于启动新线程。

4.执行sleep()方法,可以让线程在规定的时间内休眠。

5.同步代码块使用synchronized关键词修饰。

1.基于TCP/IP的网络参考模型被分为4层,分别是链路层、网络层、运输层、应用层

2.在进行网络通信时,传输层可以采用TCP,也可以采用UDP

3.在下载文件时必须采用TCP

4.JDK提供了DatagramSocket类,该类可以发送和接收数据包。

5.在JDK中提供了两个用于实现TCP程序的类:一个是ServerSocket 类,用于表示服务器端;另一个是Socket类,用于

猜你喜欢

转载自blog.csdn.net/m0_63715487/article/details/126835299
今日推荐