Java编程思想学习(三) 初始化与清理
1. 每个重载的方法都必须有独一无二的参数类型列表。(参数顺序的不同也足以区分两个方法,但不建议这样做,会使代码难以维护。)
2. 方法重载时,如果可以重载的方法间只是参数类型不同,传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升至该方法所接受的类型。 char 型略有不同,如果无法找到恰好接受 char 参数的方法,就会把 char 直接提升至 int 型。( P81 )
如果传入的实际参数较大,就得通过类型转换来执行窄化转换。如果不这样做,编译器就会报错。即先类型转换,后传入参数。
3. 要是你没有提供任何构造器,编译器会认为“你需要一个构造器,让我给你制造一个吧”;但假如你已写了一个构造器,编译器就会认为“啊,你已写了一个构造器,所以你知道你在做什么;你是刻意省略了默认构造器。”即编译器此时是不会为你制造一个默认构造器的。
4. this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。
5. 可能为一个类写了多个构造器,有时可能想在一个构造器中调用另一个构造器,以避免重复代码,可用this 关键字做到。此时,在构造器中,如果为 this 添加了参数列表,将产生对符合此参数列表的某个构造器的明确调用。如:
public class A{
A(String s){
}
A(String s,int i){
this(s);// 相当于 A(s);
}
}
然而,需要遵守如下规则:
( 1 )尽管可以用 this 调用一个构造器,但却不能在一个构造器中调用两个构造器,即在一个构造器中最多只能调用一个构造器;
( 2 )必须将构造器调用置于最起始处,否则编译器会报错;
( 3 )除构造器之外,编译器禁止在其他任何方法中调用构造器。
6. static 方法就是没有 this 的方法。在 static 方法的内部不能调用非静态方法,当然,这不是完全不可能:如果你传递一个对象的引用到静态方法里,然后通过这个引用,你就可以调用非静态方法和访问非静态数据成员了。
7. Java 中垃圾回收遵守的原则:
( 1 )对象可能不被垃圾回收;
( 2 )垃圾回收并不等于“析构”;
( 3 )垃圾回收只与内存有关。
如果 JVM 并未面临内存耗尽的情形,它是不会浪费时间去执行垃圾回收以恢复内存的。
8. 在 C++ 中可以创建一个局部对象(也就是在栈上创建,这在 Java 中行不通),在 Java 中不允许创建局部对象,必须使用 new 创建对象。( Java 对象都在堆上创建,不能在栈上创建 )
9. 在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
10. 静态对象的初始化先于非静态对象,静态对象只被初始化一次。
11. 在声明数组时,编译器不允许指定数组的大小。即这样: int a[10]; 编译器会报错。数组元素中的基本数据类型值会自动被初始化。
12. switch 与 enum 是绝佳的组合。
Java编程思想学习(三) 初始化与清理的更多相关文章
- Java编程思想学习笔记——初始化与清理
初始化 构造器保证初始化 构造器采用与类相同的名称. 默认构造器(default constructor):不接受任何参数的构造器,也叫无参构造器. 构造器也能带有形式参数,就能在初始化对象时提供实际 ...
- Java编程思想学习笔记——初始化与清理(二)
成员初始化 Java尽力保证:所有变量在使用前都能得到适当的初始化. 方法的局部变量:未初始化,编译错误. void f(){ int i; // System.out.println(i);//编译 ...
- 《 Java 编程思想》CH05 初始化与清理
< Java 编程思想>CH05 初始化与清理 用构造器确保初始化 在 Java 中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.Java 会保证初始化的进行.构造器采用与类相 ...
- Java编程思想学习(三)----第三章:操作符
3.2使用Java操作符 操作符接受一个或多个参数,并生成一个新值. 操作符作用于操作数,生成一个新值.有些操作符可以改变操作数自身的值.几乎所以的操作符都只能操作“基本类型”.例外的操作符有“=”, ...
- Java编程思想学习(八) 内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
- java编程思想--学习心得
学习Java编程思想,需要了解语言特性,对于各种名词,能够借助项目代码,解释其含义,不借助搜索工具,明白其在什么样场景下使用,会带来什么样的问题,能否避免这类问题. 学习的过程,与软件开发相同,一样是 ...
- Java编程思想学习(一)----对象导论中多态的理解
1.1抽象过程 1)万物皆对象. 2)程序是对象的集合,他们通过发送消息来告知彼此所要求做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型. 5)某一特定类型的所有对象都 ...
- Java编程思想学习(五)----第5章:初始化与清理
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...
随机推荐
- UVA 12730 Skyrk's Bar --期望问题
题意:有n个地方,现在要站人进去,而每两个人之间至少要隔k个空地,问这n个地方能站的人数的期望是多少. 分析:考虑dp[i]表示 i 个地方能站的期望数,从左往右推, 如果i-k-1<1,那么最 ...
- ZOJ 3967 Colorful Rainbows --栈的应用
题意:给出n条y=ai*x+bi的直线.对于这些直线,如果存在x使得该直线y大于其他任意一直线,那么这条直线可以被看见,问有多少条直线可以被看见. 做法什么的不讲了,参见:http://blog.cs ...
- jq 操作table
转载于:http://www.jb51.net/article/34633.htm jquery获取table中的某行全部td的内容方法,需要的朋友可以参考一下 <table>< ...
- 通过输入卡号前10位数字判断是哪个银行的卡和类型(储蓄卡or信用卡)
19位银行卡(包括储蓄卡和信用卡)可以通过前10位数字判断是哪个银行的卡和类型(储蓄卡or信用卡) 16位银行卡(包括储蓄卡和信用卡)可以通过前10位数字判断是哪个银行的卡和类型(储蓄卡or信用卡) ...
- Netty5-应答服务器
需求: 服务端:接收客户端请求,返回当前系统时间 客户端:发起时间请求 服务端 package org.zln.netty.five.timer; import io.netty.bootstrap. ...
- C# 应用程序配置文件操作
应用程序配置文件,对于asp.net是 web.config对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和依据,其本质 ...
- ip routing&no ip routing
ip routing--------查路由表, 如果ping的目的在RT中没有,不发出任何包(arp也不会发出) 如果RT中存在,则arp 下一跳,相当于no ip routing+配置网关 n ...
- maven中的 dependencies 和 dependencyManagement 的区别
今天我在配置 sellercenter 的接口测试环境的时候,发现一些依赖的写法不太一致: 比如有的依赖的<scope>是写在子项目中的 <dependencies> 下的&l ...
- RAS RC4 AES 加密 MD5
这两者唯一的相同点是设计者中都包含了MIT的Ron Revist教授.RSA是公钥密码算法,优点:不用事先通过秘密信道传递密钥,可以用于数字签名.缺点:速度慢RC4是序列密码算法,优点:速度快,缺点: ...
- 【java基础】IOC介绍及其简单实现
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...