java基础难记知识小总结

1.不同修饰符可以修饰那些内容

2.java的运算符及结合性

3.对于BigDecimal的大小比较

4.BigDecimal加减乘除:
    加法:add()
    减法:subtract()
    乘法:multiply()
    除法:divide()

5.oop理解:
    oop即是面向对象:是一种编程思想,强调的是将功能封装进对象,是更符合人们思考习惯的一种思想,将复杂的事情简单化了,将程序员从执行者变成了指挥者,面向对象开发就是创建对象,使用对象和指挥对象做事情,例如:Scanner cin = new Scanner(System.in);就是创建了一个控制台输入的对象,cin.nextInt();就是指挥对象做事情,创建对象和指挥对象做事情就是使用对象

6.重载和重写的区别:
    重载(overload):是在一个类中,有一个以上的同名方法,它们的参数的类型或个数或类型的顺序必须不同,返回值可以不同,其作用是丰富类中的方法
    重写(override):是子类继承父类,在子类中创建一个与父类中的方法名、参数、返回值相同的方法,其作用是丰富父类中的方法

7.JVM、JRE和JDK的区别:
    JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。
                  java语言是跨平台,jvm不是跨平台的。
    JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。    
    JDK(Java Development Kit):java的开发工具,包括jre+开发工具

8.类和对象:
    类:对现实世界中某类事物的描述,是抽象的,概念上的定义。
    对象:事物具体存在的个体。

9.成员变量和局部变量的区别:
    (1)作用域
        成员变量:针对整个类有效。
        局部变量:只在某个范围内有效。(一般指的就是方法,语句体内)
    (2)存储位置
        成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。
        局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。
              当方法调用完,或者语句结束后,就自动释放。
    (3)初始值
        成员变量:有默认初始值。
        局部变量:没有默认初始值,使用前必须赋值。

10.饿汉式和懒汉式的区别:
        **
        饿汉式是类一加载进内存就创建好了对象;
        懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,
        对象才开始创建。
        **
        懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
        可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,
        所以可以加双重判断来提高程序效率。
        注:开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题

11.位运算符

& 与运算符

与运算符就相当于&&,不同的是,这是按位对比,比如8&9,用十进制的眼光去看简直就瞎了,8&9其实做的运算就是00001000&00001001,然后看到当且仅当两个对应的位置都是1,结果才是1,否则结果为0,那么结果就是00001000,也就是8. 
那么,这个运算有什么卵用么?答案是当然有啦,比如,我们现在都是用int去做标志位,比如1代表正常,0代表异常,那如果我们用二进制来做的话,不就很爽了么,0001代表正常0010代表异常,0100代表XXX,是不是想想都有点小激动·····



| 或运算符

或运算符就相当于||, 当然也是按位去或的,当且仅当两个对应的位置都是0,结果才是0,否则结果是1,那么8|9就是00001000|00001001,结果就是00001001=9。至于这个有什么用,我就不赘述了,有规则就会有用,就这么简单·····



~运算符

非运算符是又得讲一下的,理解起来很容易的,就是按位取反,比如~8对吧,那就是00001000按位取反结果是11110111.前面说了,这是有符号数,也就是最高位代表符号位,也就是~8的结果是一个负数,那么人类第一反应是-8,但结果却不是,那这里简单解析一下,负数的二进制表示方式跟正数不一样,负数有一个反码和补码的概念,这么理解呢?就说-8吧,用二进制表示-8是:11111000,-10的二进制是:11110110. 
首先-8的绝对值8的二进制是00001000, 求其反码就是11110111,补码(+1)是11111000。那么上面~8的结果11110111是多少呢?我们算一下,先-1得到11110110,然后取反:00001001,得到9,那么~8==9?不是的,是结果的绝对值,因为是负数,所以是-9.这个结果大家可以去验证下~~~



^异或运算符

异或运算是:当运算符两边不同的时候结果为1,两边相同的时候结果为0 这就是传说中的同性相杀,异性相吻。举个例子就是:8^6=1000^0110=1110=14



>>位移运算符(<<同理)

位移运算符我们可以简单的理解为乘除法,像左移是除法,向右移是乘法。这个符号位是不移动的,注意下。8>>2大家不要理解为8/2,位移两位就是除以2的2次方也就是8/4.这里注意9>>1的结果是4,即最低位的1会移没了··当然了<<如果结果超过了最大整数能表示的范文,那就·····你懂的。



>>> 这个应该是无符号的位移运算符

这个运算符跟>>差不多,不同点是,它移动后高位补0,。好像>>位移后高位也是补0啊,是的,但符号位不移动,而>>>tm符号位都移动了,就是负数一移就正了·····

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值