Java基础之对象、类、方法

1,整数被0除将会产一个异常;

2,浮点数被0除会得到无穷大或NaN(Not a Number)结果;

3,strictfp关键字采用严格的浮点计算,可能产生溢出;

4,>>>高位用0填充,>>高位用符号填充,没有<<<;

5,x的a次幂,Math.pow(x, a);

6,数值之间的合法转换,实体箭头表示无信息丢失的转换,虚线箭头表示有精度丢失的转换:

Java基础之对象、类、方法_第1张图片

7,cast 强制类型转换;

8,equals比较字符串内容,==比较字符存放位置;

9,空串,Null串,if(str != null && str.length !=0);

10,StringBuffer 效率较 StringBuilder低,但StringBuffer允许在多线程环境下执行,如果在单线程环境下执行应该尽量选用StringBuilder。这两种使用方法,效率同样高于String拼接或新建字符串,因为不管是拼接还是新建字符串都是重新new内存空间,String类型值都是不可变的字符串,重新赋值或拼接字符串都是new操作,原来的空间会被回收。

StringBuilder builder = StringBuilder();
builder.append();
String s = builder.toString();
System..println(s);

11,

        Scanner in = new Scanner(System.in);
        System.out.println("what is your name?");
        String name = in.nextLine();
        System.out.println(name);
        
        Console cons = System.console();
        String nameString = cons.readLine("username:");
        char[] pwd = cons.readPassword("passowrd:");

12,jdk5开始printf沿用C语言格式%s,%d,%f占位

Java基础之对象、类、方法_第2张图片

System.out.printf("%8.2f", 890.123f);

13,Arrays

14,对象的三个主要特征:行为、状态、标识

15,类之间的关系:

    依赖(uses-a),一个类使用了另外一个类,尽量将这种依赖减少,两个类的改变将会减少bug存在,让类之间的耦合度减小;

    聚合(has-a),类A的对象包含类B的对象;

    继承(is-a)

Java基础之对象、类、方法_第3张图片

16,预定义类

    Math只封装了方法,不需要也不必隐藏数据,由于没有数据,因此也不必担心生成对象以始初始化实例域。

17,Date类主要用来表示时间点,GregorianCalendar扩展了Calendar,用于日历

GregorianCalendar now = new GregorianCalendar();
int month = now.get(Calendar.MONTH);
int weeday = now.get(Calendar.DAY_OF_WEEK);

GregorianCalendar clCalendar = new GregorianCalendar();
Date date = clCalendar.getTime();

18,static 静态方法,是一个没有this参数的方法,不能操作对象。只能操作自身类中的静态域。

19,Java总是采用按值调用。也就是说,方法得到的是所有参数值的一个copy,特别是,方法不能修改传递给它的任何参数变量的内容。

    方法参数又分为:

    1)基本数据类型(double,int等),参数存放的是数值,当参数被方法内操作后,原来的值不会发生改变;

    2)对象引用(Employee x),这时候参数存放的是引用值(也就是地址),当传参时,传递的也是地址(类似指针);当参数被方法内操作后,其实操作的都是引用地址中的对象,对象的值都会发生改变。

20,默认域(类变量)初始化:

    如果在构造器中没有显示地给域赋予初值,那么就会自动的赋为默认值:数值为0、布尔值为false、对象引用为null。

21,局部变量与域最大的不同在于,局部变量必须初始化。

22,仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。

23,初始化数据域的方法:

    1)在构造器中设置值,

    2)在声明中赋值,

    3)初始化块,这种初始在构造器之前被调用。

class Employee{
    private static int nextId=1;//静态域,只存在一份数据
    private int id;
    private String name;
    //初始化块在构造之前调用
    {
        id=nextId;
        nextId++;
    }
    public Employee(){
    }
    public Employee(String name){//重载
        this.name = name;
    }
}

24, 构造器执行步骤:

    1)所有数据被初始化为默认值,0、false、null

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

    3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体

    4)执行这个构造器主体

25,类的静态域初始化

    1)

private static int nextId=1;

    2)静态块初始化    

private static int nextId;

static{
    Random generator = new Random();
    nextId = generator.nextInt(10000);
}

26,finalize(),在某些对象使用了内存以外的资源时,将其回收和再利用显得十分重要,可以为任何一个类添加finalize方法,这个方法将在垃圾回收器清除对象之前调用,实际中不要完全依赖这个方法被调用,因为很难知道这个方法什么时候会被调用。同时也可以使用Runtime.addShutDowmHook()。建议手动close外部资源,比如connection。

你可能感兴趣的:(Java基础之对象、类、方法)