• java学习笔记1


    1.java类中的静态域与静态方法:

    静态域与静态方法需要使用static关键字,

    静态域:将域定于为static,每个类中都有这样一个域,而每个对象对该域有一个自己的拷贝,

    public class Employee {

    private static int nextID=1;

    private int id;

     

    public int getId() {

    return id;

    }

    public void setId(int id) {

    nextID++;

    this.id = nextID;

    }

    }

    Employee 的所有实例共享一个nextID,各拥有一个id.

    静态常量:

    class Math

    {

    public static final double  PI=3.1415926;

    }

    Math类中,PI为一个静态常量,不容再修改,且可以通过Math.PI直接访问。

     

    静态方法:一种不能想对象实施操作的方法。例如Math类中的pow方法。

    class MyMath

    {

    public  static final double  PI=3.1415926;

    public static double getPI()

    {

    return PI;

    }

    };

    静态方法不能操作对象中的非静态成员,但可以操作对象中的静态域(如过域是非final的,还可以进行修改操作。)

    class MyMath

    {

    public  static  double  PI=3.1415926;

    public static double getPI()

    {

    return PI;

    }

    public static void setPI()

    {

    PI++;

    }

    };

    可以通过类名访问静态域。(访问指getset)。

     

    2.类构造器用法

    初始化数据具有多种途径,以下是构造过程中的构造顺序。

    1).所有数据域被初始化位默认值(0false,null)

    2).按照在类中声明的次序,依次执行所有域初始化语句和初始化块。

    3).如果构造器第一行调用了其他的构造函数,则执行第二个构造函数。

    4).执行构造函数的主体。

    class Employee {

    private static int nextID=1;

    private int id;

    private String name;

    private double salary;

    public Employee () {

    name="";

    salary=0;

    }

     

    //初始化块

    {

    id=nextID;

    nextID++;

    }

     

         static    //静态初始化块

    {

    Random generator=new Random();

    nextId=generator.nextInt(1000);

    }

    }

     

    3.类设计技巧

    1).一定要将数据设置为私有,不要破坏类的封装性。

    2).一定要对数据进行初始化

    3)不要在类中使用果断的基本类型(不要将多个字段表示成一个属性,例如,地址可以定义成一个类,包含country,province,city等,而不要单独定义country字段,city字段,province字段)

    4)不是所有的域都需要独立的域访问器和域更改器。有些字段在使用的时候需要加以限制。

    5)使用标准格式进行类的定义。

    6)将职责过多的类进行分解。

    7)类名和方法名要能够体现他们的职责。

     

    关于继承中的几点要求:

    1)只能在继承层次间使用类型转换

    2)在将超类(父类)转换成子类之前,应该使用instanceof进行检查。

    3)若不希望一个类被继承,可以将该类设置为final类,不希望类中某一方法被重写,可以将该方法设置为final

    4)抽象类的对象变量只能应用非抽象的子类

     

    Java用于控制可见性的四个访问修饰符

    1)仅对本类可见-----private

    2)对所有类可见-----public

    3)对本包和所有子类可见----protected

    4)对本包可见-----默认

     

    相等测试与继承

    Java要求equals方法具有下面的一些特征:

    1)自反性:对于任何非空引用Xx.equals(x)应该返回true

    2)对称性:对于任何引用x和引用y,当且仅当y.equals(x)返回true ,x.equals(y)也要返回true

    3)传递性:对于任何引用x,y,z,如果x.equals(y),y.equals(z),x.equals(z)也要返回true

    4)一致性:如果xy的引用对象没有发生变化,反复调用x.equals(y)得到同样的结果。

     

     

    Java 中的可变量参数

    public static double Max(double...ds)

    {

    double largest=Double.MIN_VALUE;

    for(double v:ds)

    {

    if(v>largest)

    {

    largest=v;

    }

    }

    return largest;

    }

    ds的类型是double[]

     

    Java 中的反射学习

    Java 运行时系统为所有的对象维护一个被称为运行时的类型标示,这个信息保存着每个对象所属的类足迹,保存这些信息的类被称为Class.

    1)ObjectgetClass()方法将会返回一个Class类型的实例.

    Employee e ;

    e.getClass().getName()   //返回 "Employee"

    2)通过Class.forName(String className)来获得Class 实例

    Class a=Class.forName("Employee") //如果有包名,则需要加上包名

    Class date=Class.forName("java.util.Date")

    3)如果T是任意的Java类型,T.class将代表匹配的类对象

        Class cl1=Date.class;

    Class cl2=int.class;

    通过classnewInstance()方法可以创建一个类的实例e.getClass().newInstance()

    利用反射写的一个扩展数组的方法

    public static Object  goodArrrayGrow(Object a)

    {

    Class cl=a.getClass();

    if(cl.isArray())

    {

    return null;

    }

    Class componentType=cl.getComponentType();

    int length=Array.getLength(a);

    int newLength=length*11/10+10;

    Object newArray=Array.newInstance(componentType, newLength);

    System.arraycopy(a, 0, newArray, 0, length);

    return newLength;

     

    }

     

    接口学习

    为了让类实现一个接口,通常需要完成如下的操作

    1)将类声明为实现给定接口

    2)对接口中的所有方法经行实现

    在接口中,所有的方法默认都是public的也只能是public的,可以使用abstract修饰词,因而在类中实现接口的时候必须制定接口的方法为public (实现接口的类的方法的的访问权限应该比接口中的权限高)

    3)接口中的方法不能实现,只能在实现接口的类中实现

  • 相关阅读:
    [LeetCode179]Largest Number
    [LeetCode27]Remove Element
    [LeetCode238]Product of Array Except Self
    [LeetCode169]Majority Element求一个数组中出现次数大于n/2的数
    [LeetCode202]Happy Number判断一个数是不是happy number
    [LeetCode283]Move Zeros将一个数组中为0的元素移至数组末尾
    [LeetCode136]Single Number寻找一个数组里只出现一次的数
    iOS 9: UIStackView入门
    优化UITableViewCell高度计算的那些事
    AutoLayout深入浅出五[UITableView动态高度]
  • 原文地址:https://www.cnblogs.com/limingluzhu/p/2293016.html
Copyright © 2020-2023  润新知