您的位置:首页 > 编程语言 > Java开发

【java基础】流程控制和数组

2017-12-17 09:40 232 查看
1、在处理if...else语句时候,总是考虑先处理包含范围更小的情况

2、if中条件执行体(代码块)有多行的时候,需加入大括号,当if下面只有一行的时候,可以不用加入大括号

3、break终止循环,可以通过break outer;前提是用outer标记需要终止的循环,最后break outer;语句结束的就是标记的循环,continue终止循环剩下的语句

4、为什么静态成员、静态方法中不能用this和super关键字

在静态方法中是不能使用this预定义对象引用的,即使其后面所操作的也是静态成员也不行,这是因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法加载后,对象还不一定存在。

 super用法跟this类似,this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象;
静态优于对象存在
因为静态优先于对象存在,所以方法被静态修饰之后方法先存在,而方法里面要用到super指向的父类对象,但是所需的父类引用对象晚于该方法出现,也就是super所指向的对象没有,会报错
综上,静态方法中不可用出现super和this关键字
5、for循环和foreach循环使用场景
循环ArrayList时,普通for循环比foreach循环花费的时间要少一点儿;循环linklist时,普通for循环比foreach循环花费的时间要多很多,当将循环次数提升到一百万次的时候,循环ArrayList,普通for循环比foreach要快一点;但是普通for循环在循环linklist时,程序卡死。
综上,需要循环数组结构的时候采用普通的for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。需要循环链表结构的数据时候,一定不要使用for循环,建议采用foreach循环
6、for循环和foreach循环的限制
for循环和移除当前元素,foreach循环,在循环的时候,不能从集合中删除元素,不能向集合中增加元素。foreach循环基本类型时,修改基本类型无效;foreach循环对象时候,可以修改对象的属性值,循环变量相当于一个临时变量,只是存取了原变量的值,但不是真正的变量
注意:使用foreach循环迭代数组元素时,并不能真正改变数组元素的值,因此不要对foreach的循环变量进行赋值
7、数组在使用之前必须初始化,然后才可以使用。数组中每个元素的类型是一致的

静态初始化
由程序员显式指定每个数组元素的初始值,由系统决定数组长度

例如:arrayName = new type[]{element1,element2,element3…}或者type[] arrayName ={element1,element2,element3…}

动态初始化
程序员只指定数组长度,由系统为数组元素分配初始值
例如:arrayName = new type[length]
注意:系统初始化值的时候根据类型来分配初始化值:(byte、short、int和long)数组元素值是0;(float、double)数组元素值为0.0;(char)数组元素值为'\u0000';(boolean)数组元素值为false;引用类型(类、接口和数组)数组元素值为null
8、方法执行时,对方法内部代码栈内存和堆内存是怎么分配的?
方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将逐个放入这块栈内存里,虽然方法的执行结束,逐个方法的内存栈也将自然销毁,在此期间所有方法中的定义的局部变量都是放在栈内存中的;在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用,这个运行区即为堆内存,堆内存的生命周期为当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。这里,为了让让垃圾回收一个数组所占用的内存空间,可以将该数组变量赋值为null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: