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

java学习笔记

2015-12-28 21:44 225 查看
标识符命名规则:

1.可以由中英文字母、下划线。"_"、"$"符和数字构成,但不能以数字开头

2.Java是大小写敏感的

3.注意避开Java语言的关键字

4.标识符长度没有限定

命名习惯

类名、接口:每个单词首字母大写,其他小写

方法、变量:以小写字母开头,如果由多个单词组成,则从第二个开始首字母大写

常量:常量名全部大写,单词间以_连接

包名:全部小写

public protected private 修饰方法有什么区别?

修饰符 类内部 同一包中 子类中 其他

public Y Y Y Y

protected Y Y Y N

default Y Y N N

private Y N N N

this关键字的含义,在哪些情况下使用?

Java中为了解决变量的命名冲突和不确定性问题引入了关键字this,代表当前类的一个实例,具体适用于以下3种情况

1.返回调用当前方法的对象的引用 //Leaf.java

2.在构造方法中调用当前类的其他构造方法 //Person.java

3.当方法参数名和成员变量名相同时,用于区分 //Person.java

super关键字的含义,使用情况

Java中,this代表当前类的实例,可以用this调用当前类中的方法、属性和构造方法,而super代表父类的实例。在子类中,

使用super调用其父类的方法、属性和构造方法。两种使用情况

1.调用父类的构造方法 ///Student

2.调用父类的方法和属性 ///Student2

static关键字有什么含义?具体如何使用?

static可以用来修饰方法、属性、自由块和内部类,使用static修饰的这些成员,可以看成是这些成员与类相关,即通过

类名.成员的方式引用,而非对象.成员调用

1.static 修饰方法

main方法。在还没有创建对象前,main方法需要被调用,所有定义为静态的

///在static 修饰的方法中,不能调用没有static修饰的方法和属性,也不能使用this和super关键字

2.static 修饰属性 ///Test.java

当static修饰属性时,除属性调用方式和修饰方法类似外,还有一个特性,那就是该属性被多个对象共享,一个对象修改了该属性,

会影响其他对象

3.static 修饰自由块 ///Test1.java

自由块是Java中使用{}括起来的代码块,自由块中的代码在构造方法之前被执行,因此可以将一部分初始化代码放在自由块中,

静态自由块常用于初始化静态变量,静态自由块与类相关,只要类被加载就执行,无论创建几个对象,仅执行一次

final关键字的含义及使用方法

final 可以修饰类,成员变量和方法

1.修饰类

final修饰类时,表示该类不能被其他类继承,如String/Math.

2.修饰成员变量

final修饰成员变量时,表示该变量是一个常量

如: final int MALE = 1;

3.修饰方法

final修饰方法时,表示该方法不能在子类中重写

instanceof关键字:属于Java中的一个一元操作符,和==用法相似,作用是判断某对象是否为某个类或接口类型

Java数据类型

{数值型:整数:byte(1字节)、short(2字节)、(int)(4字节)默认、long(8字节).

{ 浮点:float(4字节) (double(8字节))默认

{ 简单数据类型 {字符型(char)(2字节)

{ {布尔型(boolean)(1位)

数据类型 {

{

{ 引用类型:类、接口、数组

{

在实现x和y 相加时,x+=y 与x=x+y两种方式的区别

short s=3;

s+=1;//编译通过

s=s+1;//编译报错

原因:s=s+1语句右边是int型,左边是short,违反了自动转换原则。而s+=1编译通过是因为+=运算符在Java环境中会自动根据

接收变量的类型进行强制转换。

equals() 与 == 的异同

== 是一个关系运算符,用于判断两个简单变量的值是否相等,或两个引用变量的引用地址是否相等

equals() 是一个方法,用于判断引用变量引用地址指向的存储内容是否相等

在比较两个字符串是否相等时,建议使用equals()

成员变量与局部变量

局部变量是指在方法体内部定义的变量,起作用域是在方法块内部有效。必须先定义后使用,系统不初始化

成员变量指在类中定义的变量,也就是属性。其作用域在整个类中有效,可以不用初始化,系统会默认给定初始值

主要区别

1.public、protected、private、static等修饰符可用于修饰成员变量,但不能修饰局部变量

2.成员变量存储在堆内存中,而局部变量存储在栈内存中

3.作用域不同

4.成员变量可以默认初始化,而局部变量不行

String变量创建之 String s = new String("abc")与String s = "abc"的区别

使用双引号时,Java先去缓冲池中寻找是否存在相同内容字符串,存在则拿来使用,否则创建后再将其放入缓冲池

String a = "tom";

String b = "tom";

变量a和b使用的是缓冲区中的同一对象

在使用String的构造方法定义对象时,Java环境和其他类型一样、每次都创建一个新的对象

String a = new String("tom");

String b = new String("tom");

变量a和b使用的是两个不同的存储对象,只是内容相同

排序法-----62页

选择排序 冒泡排序 插入排序 快速排序

package b2;

public class Sort {

/*

* 选择排序

* 将数组分为两部分,一部分从小到大排好序,

* 另一部分无序,从无序部分取出最小的数,放到

* 已经排好序的部分的最后

*

*/

public int[] xuanze(int[] arr){

int t;

for(int i = 0;i<arr.length;i++){

int m = i;

for(int j = i + 1;j<arr.length;j++){

//如果j元素比m元素小,将j赋值给m

if(arr[j]<arr[m]){

m = j;

}

}

//交换m和i对应元素的位置

if(i != m){

t = arr[i];

arr[i] = arr[m];

arr[m] = t;

}

}

return arr;

}

/*

* 冒泡排序

* 从数组开始扫描待排序元素,每次对相邻元素比较

* 将数值大的后移。经过一次排序,最大的元素将被

* 移到末尾,此时记下该元素位置,在下趟比较到此

* 位置即可

*

*/

public int[] maopao(int[] arr){

int t;

for(int i=0;i<arr.length;i++){

//循环比较相邻两个元素

for(int j=0;j<arr.length-i-1;j++){

//比较相邻元素大小,大的后移,小的前移

if(arr[j]>arr[j+1]){

t = arr[j];

arr[j] = arr[j+1];

arr[j+1] = t;

}

}

}

return arr;

}

/*

* 插入排序

* 将要排序的数组分成两部分,每次从后面的数组部分中取出

* 索引最小的数组元素,插入到前面数组的适当位置,通常在开始

* 开始排序时将数组第一个元素看为一组

*

*/

public static int[] charu(int[] arr){

//把第一个元素看作一部分,第二个元素看作另一部分

//从第二部分中依次取元素插入到第一部分

for(int i = 1;i<arr.length;i++){

int tmp = arr[i];

int j = i-1;

while(tmp<arr[j]){

arr[j+1] = arr[j];

j--;

if(j == -1){

break;

}

}

//将插入元素插入到合适位置

arr[j+1] = tmp;

}

return arr;

}

/*

* 快速排序

*

*/

public static void main(String[] args) {

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: