孙鑫java无难事视频 日志-第二讲

本文介绍了Java中的位运算原理及应用、面向对象的基本概念、类与对象的关系、构造方法的作用等核心内容,并深入探讨了方法重载、特殊变量this与super、类的继承和多态等高级特性。

1.       

1.1.1.     位运算

*        源码

将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。

            为了简单起见,我们用1个字节来表示一个整数。

            +7的原码为:       00000111

             -7的原码为:      10000111

    问题:

           +0的原码为:             00000000

           -0的原码为:             10000000

*        反码

           一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。

            为了简单起见,我们用1个字节来表示一个整数。

            +7的反码为:    00000111

            -7的反码为:     11111000

    问题:

           +0的反码为:             00000000

           -0的反码为:             11111111

*        补码

利用溢出,我们可以将减法变成加法。

    对于十进制数,如果从9得到结果5,可以用减法:

         9-4=5

      因为4+6=10,我们将6作为4的补数,将上式的减法改写为加法:

         9+6=15

      去掉高位1(也就是减去10),得到结果5

 

      对于16进制数,如果从C得到结果5,可以用减法:

         C-7=5

      因为7+9=16,我们将9作为7的补数,将上式的减法改写为加法:

         C+9=15

      去掉高位1(也就是减去16),得到结果5

*         补码转换

已知一个负数的补码,将其转换为十进制数,步骤:

      1、先对各位取反;

      2、将其转换为十进制数;

      3、加上负号,再减去1

      例如:

      11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1-6

*        位运算符

 

为了方便对二进制位进行操作,Java给我们提供了四个二进制位操作符:

&           按位与(1&1 结果是1 其他的全部是0

|            按位或(0|0结果是0 其他的全部是1

^           按位异或(相同为0 不同为1

~               按位取反(0变成1  1变成0

*        移位运算符

Java中有三个移位运算符

左移:<<

带符号右移:>>(空出补1

无符号右移:>>>(空出补0

 

1.1.2.     面向对象

*        简单的说,面向对象编程(Object Oriented Programming,简称OOP)描述的是对象之间的相互作用。

*        面向对象编程与面向过程编程的区别:

*                  过程化程序设计先确定算法,再确定数据结构;面向对象编程先确定数据结构,再确定运算。

*                    面向过程编程的程序员,习惯于建立数据结构存放数据并定义方法(函数)来操作数据;面向对象编程的程序员则构造一个对象模型,将数据与方法组织在一起

*        我们可以把现实世界的事物抽象成对象。

*        对象一般都有两个特征:状态(state)和行为(behavior)。

*        软件的对象概念是由现实世界对象抽象而来 。把现实世界对象的状态保存在软件对象的变量中;现实世界对象的行为通过软件对象的方法(函数)来实现

1.1.3.     类和对象

*        把相似的对象划归成一个类。

*        在软件中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。

*         类是创建对象的模板,对象是类的实例

1.1.4.     类的构造方法

*        构造方法的名字和类名相同,并且没有返回值。

*        构造方法主要用于为类的对象定义初始化状态。

*        我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。

*         Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法

1.1.5.     new关键字的作用

*        为对象分配内存

*        引起对象构造方法的调用

*        为对象返回一个引用

1.1.6.     缺省构造方法

*        当我们用缺省的构造方法初始化对象时,系统用默认值初始化对象的成员变量。

*        各种数据类型的默认值为:

数值型                0

boolean                false

char               ‘/0’

对象                    null

1.1.7.     方法的重载(overload)

重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。

1.1.8.     特殊变量this

*        This变量代表对象本身

*        当类中有两个同名的变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量

*        使用this简化构造函数的调用

1.1.9.     关键字static

*        静态方法和静态变量时属于某一个类,而不属于类的对象

*        静态方法和静态变量的引用直接通过类名引用

*        在静态方法中不能调用非静态的方法和引用非静态的变量,反之可以。

*        可以用类的对象obj去调用静态方法

1.1.10. 常量的定义

*        关键字 final,约定 常量变量大写形式,为了节省内存,常量通常声明为静态(static),在声明时需要初始化(也可在构造函数中初始化)

1.1.11. 类的继承

*        java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新类称为子类(派生类)

*        Java中不允许多继承

*        父类的构造方法不能被继承

1.1.12. 方法的覆盖

*        在子类中定义一个与父类同名、返回类型、参数类型均相同的一个方法,称为方法的覆盖。

*        覆盖发生在子类和父类之间

 

1.1.13. 特殊变量super

*        Super,提供了对父类的访问

*        可以使用super访问父类被子类隐藏的变量或覆盖的方法

*        每个子类构造方法的第一条语句,都是隐含调用super(),如果父类没有这种形式的构造函数,那么在编译时就会报错

1.1.14. 多态

通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。

 

注:instanceof  an instanceof Animal(判断an 是不是类Animal的对象)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值