Java基础知识2:面向对象

float类型是一定有误差的,float保存方式离散的。float可以精确到小数点后7位;double精确到小数段后15位。Java里浮点数默认保存类型是double

,整型默认是int。

容量小的数据类型自动转换为容量大的数据型;数据类型按容量大小排序为:
byte,short,char->int->long->float->double

整型常量默认类型是int,所以88888888888要写成88888888888L然后付给long型变量不然直接long 1=88888888888会报错(应该是long

1=88888888888L)

类的成员变量所有的都可以初始化,如果不初始化,系统的默认初始化所有的基础类型,引用类型的成员默认都是null

Java里除了基本类型之外的变量类型都是引用类型

构造方法与类同名,无返回值;不写系统提供默认构造方法:类名(){}

栈的内存方法执行完就没了,堆里的内存是垃圾回收器回收的

方法的重载(overload):参数列表不同,相同名字和返回值的方法。也没有什么关键字。

类对象里都包含一个父类对象:this可以看做是一个变量,它的值可以看做是当前对象的引用;super看作是对象的父类部分的引用。

静态成员变量不放在stack,也不在heap,而是在data seg,内存里只一份,哪怕不new对象,也保存独一份。
静态方法不是针对某个对象调用,所以不能访问对象成员。

字符串常量也保存在data seg里面。

为了解决命名冲突的问题,Java引入包(package)机制,提供类的多重类命名空间。报名一般把公司域名倒过来命名:com.vip.pack1。Java编译器一般

把package跟文件目录映射,所以类的包如果是com.vip,那么这个类对应的class文件应该在./com/vip下. 必须class 文件的最上层包的父目录在环境

变量classpath内。当其他类引用这个类时,要么在当前目录下找,要么在classpath里的路径中找。
必须保证类的class文件位于正确目录下(也就是目录和包的层次完全一致。源文件在哪无所谓,因为执行java不需要源文件)。访问位于同一个包中的类

不需要引入(import)

如何打jar包: 直接在命令行里输入jar可显示jar参数详细。先建目录结构(对应package),然后把class文件放到对应的目录下(也就是pachage里),然

后在根package的父目录下用命令jar -cvf a.jar *.*打好了一个a.jar包,然后再引用package里面的类。tar相当于package的压缩打包,package相当

于目录结构。

可以把整个jar包当做一个路径放在classpath变量中,就可以直接使用里面的类文件。然后jar包里的类的路径就是你要引用的类所在的package!

J2SDK中主要的包: java.lang(rt.jar文件中,jar文件就是一个压缩文件包,可以用winrar打开。位于./Java/jdk1.8.0_05/jre/lib)包含一些java

语言的核心类,如String Integer System Thread,只有这个包的所有类可以程序里直接用,不用import java.lang.

访问控制:public default protected private修饰类的成员;类只能有public default(只有同一个包能访问)两种权限。

重写方法不能使用比被重写方法更严格的访问权限。重写没有关键字(override overwrite都不用)。

继承中的构造方法:子类的构造的过程中必须调用其他基类的构造方法,如果调用super,必须写在子类构造方法的第一行。系统默认调用基类无参的构

造方法。如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。

Object:Java里所有类的父类。
toString:Object里的方法,描述当前对象的有关信息,在进行String与其他类型数据的连接操作时("info"+person)或者被打印出来时,将自动调用该

对象类的toString()方法。一般推荐重写这个方法。默认方法返回类名+对象的hashcode。
equals方法:根据Object里的默认实现:比较当前对象引用和当前引用是否是同一对象(就是a==b)。

hashcode in Java:每一个对象都有一个独一无二的编码,根据一个hashcode可以确定一个对象并可以很快速的定位这对象在内存中的位置。

动态绑定(就是多态):对于重写父类的方法,是把父类里指向该方法的指针改成指向新的类实现该方法的代码段。而动态绑定,对于方法的调用,只要方

法重写了,实际当中调哪个,就看实际引向哪个类的实现的该方法。
多态的三个条件:要有继承;要有重写;父类引用指向子类对象。满足这三个条件,当调父类该方法时,就动态绑定调用重写了的子类里的方法。

抽象类:含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。抽象类不能实例化。抽象方法只需声明不需实现。

final的成员变量和局部变量,在初始化以后不能再改值了,一个变量加final关键字,就是说你不能改它的值。final的方法不能被重写;final类不能

被继承。(final的东西只能读不能写)

接口是抽象方法和常量值定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。定义

举例,变量声明为static是说不属于任何接口的对象,final是说这个变量不能改:
public interface Runner{
    public static final int id = 1;
    public void start();
    public void stop();
}

一个类可以实现多个接口;接口中声明的变量能且只能声明为 public static final的;一个接口里的方法能且只能是抽象方法而且只能是public的;

接口可以继承接口。public static final可以不写,默认会加上。

继承类的关键字extends;实现方法的关键字是implements。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值