Java编程思想(二) —— 初始化与清理
来源:互联网 发布:godaddy和阿里云 编辑:程序博客网 时间:2024/06/05 06:10
(一)操作符一章的int类型数据溢出的问题在Java7的版本中仍然存在,而且溢出的结果千奇百怪。
public class Hello { public static void main(String[] args) { int i = Integer.MAX_VALUE; System.out.println(i); System.out.println(i*4); System.out.println(i*5); }}结果分别为2147483647,-4,2147483643。
当应用中的数据超过int的最大值时,就不能用int类型了。
(二)控制流程一章值得注意的是For语法(用来遍历数组和容器)和标签。
Java没有goto,先说很少接触到的标签,这标签的功能和goto类似。
public class Hello { public static void main(String[] args) { Label1: for (int i = 1; i < 10; i++) { for (int j = 1; j < 10; j++) { System.out.println(j); if (j == 2) { break Label1; } } } }}
break之后能够break最外层的循环,当j等于2的时候,直接跳出。如果简单的用上一两个比较方便,但是大量用到之后,跳来跳去的东西是让人头疼的。
For遍历的语法。
public class Hello { public static void main(String[] args) { int[] i = {1,2,3,4,5,6,7,8,9,0}; for(int k = 0; k< i.length;k++){ System.out.println(i[k]); } for(int j:i){ System.out.println(j); } }}明显后者遍历的语法更加简洁,应用于容器的以后会提到。
(三)接下来就是初始化与清理的问题。
(1)首先是方法重载的问题。重载方法同名字,但是参数类型,甚至参数的顺序不同都可以(最后一个不提倡,如果就单单改变顺序的话传参易出错)。
public class TV { TV(String name){ } void control(){ } /*int control(){ * return 1; }*/ void control(int page,String name){ } void control(String name,int page){ }}如上,重载的方法不能同参数同名不同类型,因为编译器根本就不知道你要用哪个。
此时如果用new出TV对象的话,是会出错的,因为默认是给你一个构造器的TV(){}
但是你此时自己自定义构造器,那么编译器就会觉得你自己弄的,那么默认的构造器你也自己去写。
(2)this关键字
以前博客也有一个问题的答案就是this
Android this与Activity.this的区别
this在方法内部使用,获得当前对象的引用。
public class TV { String name; int price; void point(String name){ this.name = name; } TV(String name){ this.name = name; } TV(int price,String name){ this(name); this.price = price; }经常使用的,其实就是将传参的name赋给TV的name。this也可以调用自己的构造器。
(3)垃圾回收
2 复制算法 两倍的内存空间,垃圾回收的时候遍历其中一个空间,遍历使用的对象
(4)初始化问题
public class TV { int price; //字段为基本类型时,会自动初始化,int默认为0 TV tv;//引用的话默认为null void point(){ int p; // System.out.println(p); 局部变量需要自己初始化 }}
(5)static关键字
之前一直想不明白那句,static方法内部不能调用非静态方法,昨天看的时候大拍了一下自己的大腿,其实,static可以让你直接用类来访问该方法,但是如果里面可以调用静态方法,那么两者就没什么区别了,可以互相嵌套。
静态数据的初始化,static修饰的静态存储区域会先初始化,而且就初始化一次。这样说的话,其实我们没有写的默认构造器其实也是static方法,最先初始化。
(6)可变数组参数
参数后面加3个点,很奇葩的用法:
public class TV { static void point(int... price){ for(int i :price){ System.out.println(i); } } public static void main(String[] args) { TV.point(); TV.point(1); int[] p = {1,2,3,4,5}; TV.point(p); }}/*result:112345*/可变数组参数,可以是空,可以一个,可以多个。
初始化是基础的东西,写程序的时候的低级错误的一些原因在此,经常就是初始化的没初始化。还有static的顺序也是优先的。
- Java编程思想(二) —— 初始化与清理
- Java编程思想读书笔记——初始化与清理(二)
- Java编程思想 ——第五章 初始化与清理
- java编程思想学习日志——初始化与清理
- Java编程思想——第五章 清理与初始化
- Java编程思想读书笔记——初始化与清理(一)
- Java编程思想——初始化与清理
- 【笔记】Java编程思想—一初始化与清理
- 初始化与清理【java编程思想杂记】
- <Java编程思想> 初始化与清理
- 《JAVA编程思想》笔记-初始化与清理
- 【Java编程思想】(1)初始化与清理
- Java编程思想之清理与初始化
- Java编程思想之初始化与清理
- 5初始化与清理-Java编程思想
- java 编程思想--初始化与清理
- Java编程思想-05初始化与清理
- Java编程思想初始化与清理
- 简学lingo(一)——基础篇
- Vedio.js视频播放
- ElasticSearch插件
- 中国剩余定理
- strtok 与 strsep 函数说明
- Java编程思想(二) —— 初始化与清理
- 心灵的旅程
- 用户体验至上,设计只是辅助
- Buy Tickets+POJ+线段树单点更新的灵活运用
- android 用ListView实现表格样式
- mysql函数substring_index的用法
- 网络端到端原则
- cheap louis vuitton outlet
- Netty Channel 接口名词理解