- 浏览: 66428 次
- 性别:
- 来自: 成都
最新评论
-
tangyongjun:
多谢了 有时间研究一下jvm
JVM的理解
文章列表
private--仅对本类可见
public-- 对所有类可见
protected-- 对本包和所有子类可见
默认friendly--对本包可见,但这是一种不受鼓励的形式。
访问权限修饰符权限从高到低排列是public ,protected ,friendly, private。
java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
分三种不同情况来总结。
一 访问权限修饰符修饰成员变量和方法
public:表明该成员变量和方法是共有的,能在任何情况下被访问。
protected:必须在同一 ...
有时候,可能希望阻止人们利用某个类来定义子类,不允许扩展的类被称为final类。
final类中的 方法自动生成final方法。
1 将数据设计为私有
2 一定要将数据进行私有化
3 不要在类中使用过多的基本数据类型
4 不是所有的域都需要独立的域访问器和域更改器
有些初始化了后,就不需要更改的数据 是不需要更改器的
5 使用标准格式进行类的定义
6 将职责过多的类进行分解
7 类名和方法名要能够体现他们的职责
public class NoMain {
public static void main(String[] args){
Main mmm= new Main();
}
}
class Main{
static{
System.out.println("hello,no main world!!");
}
}
如果在构造器中没有显示的给予域 赋初始化值,那么系统会自动的赋默认值: 数值为0,布尔值为FALSE、对象引用为null。
然而,只有缺少程序设计经验的人才会这么做。确实,如果不明确的对域进行初始化,就会影响代码的可读性。
Java程序设计语言总是采用只调用。也就是说,方法得到的是所有参数数值的一个拷贝,特别是,方法不能修改传递给他的任何参数变量的内容。
静态导入
一般写法:
public class Test {
public static void main(String[] args) {
System.out.println("可以省略静态类名直接调用方法");
System.out.println(Math.pow(2, 4));
}
}
静态导入:
import static java.lang.System.*;
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) ...
1.静态域
如果将域定义为static,每个类只有一个这样的域。而每一个对象对于所有的实例域都有自己的一份拷贝。
例如,假定需要给每一个记雇员赋予惟一的标识
码。这里给Employee类添加一个实例域id和一个静态域nextId:
class Emp ...
Final实例域可以将实例域定义为final。
构建对象时必须初始化这样的域。也就是说,必须确保在每一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够再对它进行修改。例如,可以将Employee类中的name域声明为final,因为在对象构建之后,这个值不会再被修改,即没有setName方法。 final修饰符大都应用于基本数据(primitive)类型域,或不可变(immutable)类的域(如果类中的每个方法都不会改变其对象,这种类就是不可变的类。例如,String类就是一个不可变的类)。对于可变的类,使用final修饰符可能会对读者造成混乱。
例如,仅仅意味着存储在hir ...
外键的作用很重要,最好在数据库中使用。举一个例子比较明白。
比如有两张表格,一个是学生档案,另一个是上学期间的成绩单
档案中会有:学号,姓名。(学号为主键)
成绩单有(简化过的):学期号,学号,平均分数(学期号,学号两个同时为主键,学号同时为外键)
为了保证成绩单上的数据有效,所以要求录入学号时,必需保证档案中有这个学号,否则就不能录入。
从而保证了成绩单上的成绩数据的引用完整,否则将会是垃圾数据。
用程序控制,有很多缺点;录入成绩单时为了保证学号有效,首先要搜索档案,当档案很大时会影响效率。程序控制并不能保证百分之百引用完整性,尤其是并发操作。
说一个特例 ...
构造器的几个特性:
1 构造器与类同名
2 每个类有一个以上的构造器
3 构造器 可以有0个,1个或者1个以上的参数
4 构造器没有返回值
5 构造器总是伴随着new操作一起调用
Java对象都是在堆中构造的
实现封装的关键在于绝对不能让类中的方法直接访问其他类的实例域。程序仅仅用对象的方法与对象数据进行交互。封装给予了对象黑盒的特性,这是提高重用性和可靠性的关键。
这就是说 一个类完全可以改变存储数据的方式,只要仍旧使用同样的方法来操作数据,其他的对象就不会知道或者介意发生的变化。
Java的多维数组有一定的优势,尤其是不规则数组。
Java中其实是没有多维数组,多维数组解析为数组的数组,所以可以很容易的构造多维不规则数组。
a[0] 1
a[1] 1 2
a[2] 1 2 3
a[3] 1 2 3 4
可以构造任意的不规则数组
BigInteger 和 BigDecimal 这两个类可以处理任意长度数字序列的数值。
使用静态的valueOf()可以将普通的数值转换成大数值:
BigInteger b=BigInteger.valueOf(1000);大数值中不能用 通常的“+”“*”,而要使用add, multiply方法:
BigInteger c = a.add(b);
BigInteger d = b.multiply(c);
java中不能进行运算符重载。
BigDecimal 的例子:
BigDecimal aBigDecimal=BigDecimal.valueOf(1.0);
...