疑惑,待解决问题。

1.递归,汉诺塔

2Java final关键字和构造方法的关系。

private final char[] value; //字符数组,私有最终变量,只能赋值一次


public MyString()
{
this.value = new char[0];

}

当没有构造方法是,在value处报错The blank final field value may not have been initialized

当有构造方法没有this.value = new char[0];时,在构造方法处报错The blank final field value may not have been initialized

当MyString方法如上时,则不报错。这是为什么?

解决:当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。final变量=常量(并未完全理解,以后可以在工作中继续理解深入)


Iterable和iterator是什么,什么区别,生成器,迭代器

Iterable

一个集合对象要表明自己支持迭代,能有使用foreach语句的特权,就必须实现Iterable接口,表明我是可迭代的!然而实现Iterable接口,就必需为foreach语句提供一个迭代器。
这个迭代器是用接口定义的 iterator方法提供的。也就是iterator方法需要返回一个Iterator对象。

Iterator

 包含3个方法: hasNext ,  next , remove。remove按需求实现,一般它很少用到,以至于Eclipse接口方法自动补全时,都忽略了remove放方法。

1、每次在迭代前   ,先调用hasNext()探测是否迭代到终点(本次还能再迭代吗?)。
2、next方法不仅要返回当前元素,还要后移游标cursor
3、remove()方法用来删除最近一次已经迭代出的元素
4、 迭代出的元素是原集合中元素的拷贝(重要)
5、配合foreach使用
详细参考 https://www.cnblogs.com/keyi/p/5821285.html

4 Java内部类

作用

1.内部类可以很好的实现隐藏

 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以

2.内部类拥有外围类的所有元素的访问权限

3.可是实现多重继承

4.可以避免修改接口而实现同一个类中两种同名方法的调用。


5.Java基本数据类型和引用数据类型区别

基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。

引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

基本类型:

基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。

引用类型:

是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。 


6.Java堆和栈

在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

堆内存用来存放由new创建的对象和数组。
在堆中分配的内存,由Java 虚拟机的自动垃圾回收器来管理

7.快速排序

8.java 位运算符



猜你喜欢

转载自blog.csdn.net/Ffffatass/article/details/79726988