java学习笔记

标识符命名规则:
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) {

}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值