JAVA语言的特征:封装 , 继承 , 多态。
String 和 BufferString的区别:
String类用来表示那些创建后就不会再改变的字符串,它是immutable的。而StringBuffer类用来表示内容可变的字符串,并提供了修改底层字符串的方法。
System.out.println 和 System.out.print 的区别:
第一个产生新的一行,而第二个没有产生新行。
JAVA的访问权限符:
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × × 缺省默认
private √ × × ×
引用:Reference
Java对基本数据类型(如int float double)和对象的处理方式不同。
对基本数据类型(包括String)的直接在存储地址上保存数据,没被赋值的基础类型变量会在引用时报错。
如:int i=100; int j=100; i==j 是true; 即便 是 int j 改为 double 或 float 也是true,可能是它们存储的数据是一样,所以返回值是ture;(个人推断)
对对象的处理,在对象没被赋值(实例化)时,对象的存储地址指向的是null的特殊对象,而被赋值后保存的地址指向内存空间的某个地方。
如:student s; 在没new之前是null,赋值后保存的存储地址指向内存的XX地方。
Student s1 = new student(“xiao”); Student s2= new student(“xiao”);
S1==s2 为false 因为指向的两个不同的内存的地址。如果s1=s2;无论怎样判断都一样,都指向同一内存。
S1.equal(s2) 为true (*前提是重构Object类的equal()的函数,否则JAVA直接当作不知如何比较而直接返回false*)因为各自指向的那个内存地址上的数据比较后是一样的。
冒泡排序:N个数据两两比较,前面大于后面的,换位,总共N-1趟,第m趟执行 N-m的比较。
插入排序(效率较高):左边是有序的,右边无序。将右边第一个拿出来(out)与左边末位比较,若大则直接放在原位,否则,左边末位放入右边拿出来的那个位置。
代码:public void insertionSort(){
Int i; out ;
//从第二个开始
for(out=1;out<length;out++){
//out的位置与前面一位比较
long temp = a[out];
in= out;
while(in>0&&a[in-1]>temp){
a[in]=a[in-1];
in--;
} //直到out找到比它小的
//找到后,放到它的前面
a[in]=temp
}
}