zoukankan      html  css  js  c++  java
  • Java_实验二

    (一)学习总结
    1、构造方法用于在创建对象时对其进行初始化Person p=new Person
    他的特点:(1)方法名与类名相同(2)方法名前没有返回值类的声明,方法中不能使用return语句返回一个值(3)用户不能直接调用,而是通过关键字new自动调用
    方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。

    public class Test {
        public static void main(String args[]) { 
           Foo obj = new Foo();       
        }     
    }
    class Foo{
        int value;
        public Foo(int intValue){
            value = intValue;
        }
    }
    

    不可以,类中没有定义无参的构造方法

    2、编译没有错误,在运行时出错

    public class Test {
        public static void main(String[] args) {
            MyClass[] arr=new MyClass[3];
            arr[1].setValue(100);
        }
    }
    class MyClass{
        public int value=1;
        public MyClass(){
        	
        }
        public MyClass(int value){
        	this.value=value;
        }
        public int getValue(){
        	return value;
        }
        public void setValue(int value){
        	this.value=value;
        }
    }
    

    3、

    public class Test {
        public static void main(String[] args) {
            Foo obj1 = new Foo();
            Foo obj2 = new Foo();
            System.out.println(obj1 == obj2);
        }
    }
    class Foo{
        int value = 100;
    }
    

    运行结果为false ==比较的是地址,应该用equals方法
    4、

    class CashCard {
    	String number;
    	int balance;
    	int bonus;
    	public CashCard(String number,int balance,int bonus){
    		number = number;
    		balance = balance;
    		bonus = bonus;
    	}
    }
    public class Test {
    	public static void main(String[] args) {
    		CashCard card1 = new CashCard("A001",500,0);
    		CashCard card2 = new CashCard("A002",300,0);
    		CashCard card3 = new CashCard("A003",1000,1);
    	}
    }
    

    封装把对象的所有组成部分(数据和方法)封装在一起构成类,对象本身的数据的得到保护/隐藏,其他对象通过该对象的访问方法(接口/interface)与之发生联系,好处:模块化,信息隐藏—通常定义一个公共接口/方法实现对对象的访问

    5、(1)

    class A{
        private int secret = 5;
    }
    public class Test{
        public static void main(String args[]){
            A a = new A();
            System.out.println(a.secret++);
        }
    }
    

    不能通过编译,在类中没有定义secret的getter和setter方法
    (2)

    public class Test{
        int x = 50;
        static int y = 200;
        public static void method(){
            System.out.println(x+y);
        }
        public static void main(String args[]){
            Test.method();
        }
    }
    

    不能通过编译,因为x不是静态变量
    6、使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。

    
    class Book{
        int bookId;
        String bookName;
        double price;
        String str;
        static int num;
        static{
        	num=1000;
        }
        Book(){
    		
    	}
    	Book(String bookName,double price){
    		this.bookName=bookName;
    		this.price=price;
    		num++;
    	}
         public String getBookName() {
            return bookName;
        }
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
        public double getPrice() {
            return price;
        }
        public void setPrice(double price) {
            this.price = price;
        }  
        public static int totalBook(){
    		return num-1000;
    	}
    	public void tostring(){
    		System.out.println("书名:"+bookName+" 书价:"+price);
    	}
    }
    public class Test{
        public static void main(String args[]){ 
            Book[] books = {new Book("c语言程序设计",29.3),
                            new Book("数据库原理",30),
                            new Book("Java学习笔记",68)};
            System.out.println("图书总数为:"+ Book.totalBook()); 
            for(Book book:books){
                book.tostring();
            }
        }   
    }
    

    7、
    在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象,构造方法私有化,在类内创建一个实例对象,用私有静态成员instance引用该对象,定义静态方法getInstance()返回实例对象instance

    class Sun{
    	private static Sun instance = new Sun() ;
    	private Sun(){   }
    	public static Sun getInstance(){
    		return instance ;
    	}
    }
    public class Test{
    	public static void main(String args[]){
    		Sun s1 = Sun.getInstance() ;
    		Sun s2 = Sun.getInstance() ;
    		System.out.println(s1==s2);
    	}
    }
    

    8、

    public class Test {
        String str = new String("你好  ");
        char[] ch = { 'w','o','l','l','d' };
        public static void main(String args[]) {
            Test test = new Test();
            test.change(test.str, test.ch);
            System.out.print(test.str);
            System.out.print(test.ch);
        }
        public void change(String str, char ch[]) {
            str = "hello";
            ch[0] = 'W';
        }
    }
    

    运行结果为:你好Wolld

    (二)实验总结
    1.用面向对象思想完成评分系统
    程序设计思路:
    设计一个选手类,一个测试类,一个平分类写出他们的构造方法以及getter和setter方法,构造方法(有参和无参),在评分类中计算平均分,在测试类中进行验证
    问题以及解决方案:
    (1)、开始没有写无参构造方法,在调用时出错
    (2)、注意","和“.”的使用,在编写程序时注意不要打错
    (3)、输入的评委人数一定要大于三否则去掉最高和最低没有成绩
    (4)、注意循环的使用以及嵌套,不要重复输入没有必要的信息

    2.Email验证
    程序设计思路:
    可以设计4个方法分别测试email的地址是否合法,注意@和。同时存在,可用查询如果没有返回-1,查看是否同时存在,对于@在。之前可以检测他们的下标的大小,对于不能以@开头可以看看下表为0的是否为@,对com或cn或net或gov或edu或org结尾的可以提取字符串的后三个字符进行比较,在主方法中判断他们是否都正确
    问题以及解决方案:
    (1)、对cn的测试可以用。cn
    (2)、注意字符串方法的调用为str.indexOf();
    (3)、可以使用Boolean类型的返回值,在主方法中进行验证

    3.查找子串
    程序设计思路:
    定义一个方法找到字符串中有几个子串,返回子串的个数,主方法中输出,在while循环中调用indexof方法,注意从方法返回的下标继续查找
    问题以及解决方案:
    (1)、注意是从indexof方法返回的下标开始第二次的查询,以后同理
    (2)、注意当返回的下标不为一时,子串个数加一

    4.统计文件
    程序设计思路:
    可以编写一个方法查找有多少个文件类型一个数,且进行文件首字母大写输出,先用split方法对字符串进行分离,再用substring进行文件第一个字母分离,大写输出,在定义字符串数组按“.”分离字符串,把字符串数组的最后一个字符串放到一个新的字符串数组中,计算文件类型以及个数
    问题以及解决方案:
    (1)、在对文件的首字母大写输出是可以用str.substring(0,1).toUpperCase()
    (2)、在计数文件的个数时注意数组不要越界
    (3)、在进行文件类型的统计要考虑到以a。txt为文件名的情况

    5.类的设计
    程序设计思路:
    设计一个日期类,一个职工类,一个部门类,分别写出他们的getter,setterfangfa以及含参和不含参的构造方法,日期类可以调用str。replaceAll(",","-")方法,在测试类中调用getter和setter方法对职工的生日和参加工作时间进行设置,在测试类中进行信息的设置,实现查询
    问题以及解决方案:
    (1)、在设置日期类时可以调用replaceAll()方法
    (2)、在改变员工的日期类形时,要调用getter和setter方法
    (3)、可以对信息进行初始化在查询
    (4)、可以设置一个Boolean类型的变量,如果不想继续查询可以终止查询

  • 相关阅读:
    FFmpeg笔记-基本使用
    记一次下载大文件存在数据异常问题排查
    从零开始编写IntelliJ IDEA插件
    Guava LoadingCache不能缓存null值
    FFmpeg笔记--vcodec和-c:v,-acodec和-c:a的区别?
    说说maven依赖冲突,依赖调解,依赖传递和依赖范围
    记一次NoHttpResponseException问题排查
    JVM源码分析-类加载场景实例分析
    JVM源码分析-JVM源码编译与调试
    理解PHP的变量,值与引用的关系
  • 原文地址:https://www.cnblogs.com/lr97/p/8684495.html
Copyright © 2011-2022 走看看