Java暑期学习Day15
{:10_310:}今天是第15天,希望能坚持记录学习static/image/hrline/3.gif
① 不定长度自变量(JDK5之后支持)
public class MathTool {
public static int sum(int... numbers) {
int sum = 0;
for (int number : numbers) {
sum += number;
}
return sum;
}
}
要使用不定长度自变量,声明参数列时要在类型关键字后加上...,在sum()方法通过用增强式for循环来取得不定长度自变量中的每个元素。
使用不定长度自变量时,方法上声明的不定长度参数必须是参数列的最后一个,使用两个以上不定长度自变量也是不合法的。
② 设计模式
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。
四位作者合称 GOF(四人帮,全拼 Gang of Four)。
A.单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
(注意点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。)
instance:n.情况; 例子,实例; 要求,建议; [法] 诉讼手续; vt.举…为例;
enclosing v.(用墙、篱笆等) 把…围起来( enclose的现在分词 ); 把…装入信封; 附入; (尤指墙、篱笆等 ) 围住;
qualify vt.(使) 具有资格; 有权; 达标;
vt.限定,修饰; 描述,形容; 使合适; 证明…合格;
vi.合格或成为合格; 取得…的资格;
allocationn.配给,分配; 分配额(或量); 划拨的款项; 拨给的场地;
【报错记录】
Multiple markers at this line
- No enclosing instance of type SingleTonDemo is
accessible. Must qualify the allocation with an enclosing
instance of type SingleTonDemo (e.g. x.new A() where x is an
instance of SingleTonDemo).
- The value of the local variable ton1 is not used
public class SingleTonDemo {
public static voidmain(String []args){
//SingleTon ton1 =new SingleTon();
//SingleTon ton2 =new SingleTon();
SingleTon ton1 = SingleTon.getInstance();
SingleTon ton2= SingleTon.getInstance();
}}
class SingleTon{
//privatestaticSingleTon singleTon=new SingleTon();
privatestaticSingleTon singleTon=null;
privateSingleTon(){
System.out.println("SingleTon");
}
public static SingleTon getInstance(){
if(singleTon==null){
singleTon=new SingleTon();
}
return singleTon;
}
}
结果:SingleTon
③ final关键字的特点
A.final可以用来修饰变量、方法、类
final修饰的方法,表示该方法不能被重写。
final修饰的类,表示最终类,不能被继承。
B.final修饰的变量是一个常量。一旦赋了值就不能修改。(常量一般都和static关键字配合使用)
public class FinalDemo {
public static void main(String[] args) {
A a=new A();
a.showNumber1();
C c=new C();
c.showNumber2();
final A a2=new A();
//a2=new A();The final local variable a2 cannot be assigned.
//It must be blank and not using a compound assignment
//final用在引用变量上,代表此引用变量只能引用一开始所引用的
//对象,中途不能改变指向
a2.number2=5;
a2.showNumber2();
}
}
//常量类是不能被继承的
class A{
public final int number1=1;
public int number2=2;
public void showNumber1(){
// number1++;The final field A.number1 cannot be assigned
System.out.println(number1);
}
//子类不能对父类中的常量方法进行改写(重写)
public void showNumber2(){
System.out.println(number2);
}
}
class C extends A{
public void showNumber2(){
System.out.println(number2);
}
}
④ 内部类
将一个类定义在另一个类的内部。内部的类称之为内部类。
主要特点:
A.内部类可以很好地实现隐藏,可以使用protected、public、private修饰符
B.内部类可以直接访问外部类的所有成员,包括私有的成员。
(通常非静态内部类会声明为private,这类内部类是辅助类中某些操作而设计,外部不用知道内部类的存在。
内部类也可以声明为static)
C.内部类可以解决一些问题,比如间接地去实现多继承。
可以避免修改接口而实现同一个类中两种同名的调用。
⑤ 传值调用(Pass by Value)
传值调用是指方法在调用参数时,不是对原参数进行操作,而是创建参数的拷贝并对其进行操作,这种调用有利于保护数据。
页:
[1]