java基础部分

1,java中的方法理解:

  程序执行的基本原理:CPU有个指令指示器,指向下一条要执行的指令,要么顺序执行,要么条件跳转(条件跳转和无条件跳转两种)。函数调用可以看做是一个无条件跳转,跳转到对应函数的指令出开始执行,碰到return语句或者函数结尾的时候,再执行一次无条件跳转,跳转回调用方,执行调用函数后的下一条指令。

 这里有几个问题,参数如何传递?函数如何知道返回到什么地方? 在if、for、中,跳转的地址都是确定的,但是函数自己并并不知道会被谁调用,而且可能会被很多地方调用,它并不能提前知道执行结束后返回到哪里。

函数如何返回给调用方?解决思路是使用内存来存放这些数据,函数调用方和函数自己就如何存放和使用这些数据达成一个一致的协议或阅读,这个约定在各种计算机系统中都是类似的,存放这些数据的内存有一个相同的名字--栈

栈:主要用来存放函数调用过程中需要的数据,包括参数,返回地址,以及函数定义的局部变量。

 

2,位移位运算

  2.1 左移:操作符为<< ,向左移动,右边的地位补0,高位的就舍弃掉了,将二进制看做整数,左移1位就是相当于乘以2;

  2.2 有符号右移:>> 右边的舍弃,左边补什么取决于原来的高位时什么,原来是1就补1,是0就补0,向右移以为相当于除以2

  2.3 无符号右移 : >>> 右边舍弃掉,左边补0;

 

 

3,构造方法的问题;

 每个类都至少要有一个构造方法,在通过new创建对象过程中会被调用,但构造方法如果没有什么操作要做,可以省略。java编译器会自动生成一个默认的构造方法,也没有具体操作。但是一旦定义了构造方法,java就不会再自动生成默认的了。解释如下:如果在某个类中我们只定义了有参的构造方法,而你在创建对象时使用 类似User user = new User(); 就会报错,因为找不大道不带参数的构造方法。

 为什么java有时候自动生成有时候不生成呢? 在没有定义任何构造方法时候,Java认为用户不需要,所以就生成一个空的以被new过程中调用;定义了构造法方法的时候,Java认为用户知道自己在干嘛,认为用户有意的不要无参的构造方法,所以不会生成。 

在子父类中,子类可以通过super调用父类的构造方法,如果子类没有通过super调用,则会自动调用父类的默认构造方法,如果父类没有默认的构造方法(也就是在父类中自己创建了构造方法,此时,java就不会给父类提供默认的构造方法了) ,它的任何子类都要通过super去调用父类的构造方法,否则java会提示编译错误

 

 

4,toString 是什么?

 

/**toString分为3部分,1,返回当前对象的类名;2,@连接符;3,这个对象的哈希值的十六进制的表示
* 为什么这么写? 写类名可以理解,写哈希值是不得已,因为Object类并不知道具体对象的属性,不知道用
*文本描述,但又要区分不同的对象,只能是写一个哈希值,但当子类知道自己的属性了,子类可以重写父类的
*方法,以反映自己的不同实现*/
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

5,Comparable接口作用?

 大致了解下:实现comparable接口的类可以实现自定义排序,且可以通过collections.sort或者arrays.sort进行排序

详细内容参考以下博文

  https://blog.csdn.net/ysj4428/article/details/81195846

 

你可能感兴趣的:(java基础部分)