(一)学习总结
1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
构造方法是一种特殊的方法,它是一个与类同名且返回值类型为同名类类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法用于在创建对象时对其进行初始化。
Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。即使方法的名字相同,但是因为参数的传入类型数量不同,而产生不同的名字相同。
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].value=100;
}
}
class MyClass{
public int value=1;
}~~~
运行结果:Exception in thread "main" java.lang.NullPointerException
只声明的对象数组,没有实现对象实例化,应对数组里的每个对象元素,然后通过new构造方法进行实例化。
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
obj1 obj2 是开辟的两个新地址 地址不同 所以为 false。
###4.什么是面向对象的封装性,Java中是如何实现封装性的?
封装性是面向对象编程中的三大特征之一,封装性就是把对象的成员属性和成员方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含如下两个含义。
(1)把对象的全部成员属性和全部成员方法结合在一起,形成一个不可分割的独立单位(即对象)
(2)信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口是指与外部发生联系。
private String classs;
public String getClasss(){
return classs;
}
public void setClasss(String n){
class=n;
}
public String toString(){
return "班级:"+getClasss();
public class Text{
public static void main(String args[]){
Person per=new Person();
per.setClasss("first class");
System.out.printfln(per.toString);
}
}~~~
5.阅读下面程序,分析是否能编译通过?如果不能,说明原因。
(1)
private int secret = 5;
}
public class Test{
public static void main(String args[]){
A a = new A();
System.out.println(a.secret++);
}
}~~~
编译不能通过,因为 secret定义为private 为私有 其他不能访问。
(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像y一样加 static定义。
6.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出测试类代码和Book类的部分代码,将代码补充完整。
int bookId;
String bookName;
double price;
// 声明静态变量
//定义静态代码块对静态变量初始化
//构造方法
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;
}
//定义方法求图书总册数
//重写toString方法
}
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){
System.out.println(book.toString());
}
}
}~~~
###7.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
单例模式:是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
特点:
(1)实例控制:单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
(2)灵活性:因为类控制了实例化过程,所以类可以灵活更改实例化过程。
###8.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。
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
原str的内容不改变,
(二)实验总结
Email验证
(1)在键盘输入所要验证的Email,首先查询是否有“@”和“."以及前者要在后者的前面。
(2)判断是否是以”@“开头。
(3)看结尾是不是以com,cn,net,gov,edu,org结尾。
查找字符串
(1)记录输入的字符串 和要 查询的字符串
(2)查找第一次被查找字符串的位置将起位置加上被查找字符串长度赋值给public int indexOf(String str, int fromIndex)中的位置诺找到则++,每次都吧找到的地址加上被查找字符串长度返回给indexOf(String str, int fromIndex)
(3)然后输出
统计文件
(1)录入所要分类的文件名
(2)把所输入的字符串用split方法分开存入字符串数组。
(3)把分完的字符串数组中的每一个字符串在分成字符串数组,再把每个字符串数组的第一个变大写 然后将字符串数组强制String传回
(4)把分完串的在按“.”再分一次,把新的字符串数组从第一个开始自己比较然后之后相同为null 并记录个数 最后返回输出。