zoukankan      html  css  js  c++  java
  • 第二次作业

    (一)学习总结

    1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
    1).构造方法的名称必须与类名一致
    2).构造方法的声明处不能有任何返回值类型的声明
    3).不能再构造方法中使用return返回一个值
    4). 有n个参数或者参数类型不同为重载
    以上程序不可以编译
    因为公共类未调用参数,Foo类里无引用。
    ...
    public class Bank {
    public static void main(String args[]) {
    Foo obj = new Foo(20);
    }
    }
    class Foo{
    int value;
    public Foo(int intValue){
    value = intValue;
    }
    }
    ...
    这样就可以了,不过没有输出看不大出来而已

    2.运行下列程序,结果是什么?分析原因,应如何修改。
    结果显示不出来,应该对对象实例化
    2.运行下列程序,结果是什么?分析原因,应如何修改。
    public class Bank {
    public static void main(String[] args) {
    MyClass[] arr=new MyClass[3];
    arr[1]=new MyClass(100);
    System.out.println(arr[1].value);
    }
    }
    class MyClass{
    public int value=1;
    public MyClass(int value){
    this.value=value;
    }
    public int MyClass(){
    return value;
    }

    }

    3.运行下列程序,结果是什么?说明原因。
    结果是false,因为两者地址不同
    public class Bank {
    public static void main(String[] args) {
    Foo obj1 = new Foo();
    Foo obj2 = new Foo();
    obj1=obj2;

    	System.out.println(obj1 == obj2);
    }
    

    }
    class Foo{
    int value = 100;
    }
    4.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。
    不能由对象直接访问的变量,需要通过方法获得
    class Person{
    private int age;
    public Person(){
    }
    public int getAge(){
    return age;
    }
    public void setAge(int age){
    this.age=age;
    }

    }
    public class Bank{
    public static void main(String[] args){
    Person per=new Person();
    per.setAge(21);
    //per.getAge();
    System.out.println(per.getAge());
    }
    }

    5.阅读下面程序,分析是否能编译通过?如果不能,说明原因。
    (1)
    不能,方法类型的后面不可以累加
    class A{
    private int secret = 5;
    public int getSecret(){
    secret++;
    return secret;
    }
    public void setSecret(int secret){
    this.secret=secret;
    }
    }
    public class Bank{
    public static void main(String args[]){
    A a = new A();
    System.out.println(a.getSecret());
    }
    }
    修改如上.
    (2).
    x和y类型不同,x不是静态变量,修改如下
    package 一本的作业;

    public class Bank{
    static int x = 50;
    static int y = 200;
    public static void method(){
    System.out.println(x+y);
    }
    public static void main(String args[]){
    Bank.method();
    }
    }
    6.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出测试类代码和Book类的部分代码,将代码补充完整。
    package 一本的作业;

    class Book{
    int bookId;
    String bookName;
    double price;
    // 声明静态变量
    static int number=1000;
    //定义静态代码块对静态变量初始化

    //构造方法
    public Book(){
    	
    }
    public Book(String bookName,double price){
    	this.bookName=bookName;
    	this.price=price;
    	bookId=number;
    }
     public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public int getBookId(){
    	return bookId;
    }
    public void setBookId(int bookId){
    	this.bookId=bookId;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }  
    //定义方法求图书总册数
    public static int totalBook(){
    	return number++;
    }
    //重写toString方法
    public String toString(){
    	return "书号	"+this.getBookId()+"书名	"+this.getBookName()+"书的价格"+this.getPrice();
    }
    

    }
    public class Bank{
    public static void main(String args[]){
    Book[] books = {new Book("c语言程序设计",29.3),
    new Book("数据库原理",30),
    new Book("Java学习笔记",68)};
    int j=0;
    for(int i=0;i<books.length;i++){
    j++;
    }
    System.out.println("图书总数为:"+(Book.totalBook()+j));
    for(Book book:books){
    System.out.println(book.toString());
    }
    }
    }
    7.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
    单例模式有以下特点:
      1、单例类只能有一个实例。
      2、单例类必须自己创建自己的唯一实例。
      3、单例类必须给所有其他对象提供这一实例。
    public class Sun{
    private Sun() {}
    private static Sun single=null;
    //静态工厂方法
    public static Sun getInstance() {
    if (single == null) {
    single = new Sun();
    }
    return single;
    }
    }
    8.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。
    运行结果为:你好 Wolld
    因为类里的值没有被引用;

    (二)实验总结

    本次实验包括实验二和实验三两次的内容:
    1.用面向对象思想完成评分系统
    程序设计思路:设计选手类,评委类,测试类
    一次在各类中输入,最后在测试类引用输出最大值最小值等
    问题一:不会输出得出的结果
    原因:toString里没有引用类里的对象
    解决方法:照书写的,引用get方法
    2.Email验证
    程序设计思路:检验是否已标准结尾,判断@与.的位置,主要用indexOf方法
    3.查找子串
    4.统计文件
    以,为分界线挑出文件名再挑出每个字符串的第一位使其变大写字母,以后缀为引计算文件数
    234题均为遇到问题
    5.类的设计
    对完成实验内容过程中遇到的问题、解决方案以及程序的设计思路和思考等进行归纳总结。
    类的设计没有太大的问题,get,set等使程序一目了然
    https://gitee.com/undersnow/java-hebau

  • 相关阅读:
    LeetCode算法题-Trim a Binary Search Tree(Java实现)
    LeetCode算法题-Non-decreasing Array(Java实现)
    LeetCode算法题-Image Smoother(Java实现)
    Node.js 官方文档中文版
    jade 网上看到一个不错的demo 分享 一下 链接
    jade 的 考古
    标题党 数据抓取与管理
    最近面试 有人问 sqlite 用过么 sqlite 不是 嵌入式的 开发 么 难道最近还 web开发 了?
    嗯 想写个demo 苦于没数据
    客户端 jQuery 跨端口 调用 node 服务端
  • 原文地址:https://www.cnblogs.com/yeqingsong/p/8666985.html
Copyright © 2011-2022 走看看