JAVA学习笔记(一)

进入培训班第一天,开始记录下一些笔记,也算是记录学习的轨迹吧,更新时间会比较长。

1.在for循环中,循环部分只出现在花括号中“{}”,即所谓的循环体。

2.return的用法:
        ①返回值
        ②结束程序运行

3.eclipse的快捷键:
        ①输出void main方法:输入main + Alt+ ?

        ②输出System.out.println方法:输入syso+Alt+?


4.对于if语句,若其后没有花括号,则只能对一行起作用。

   如:

if(i<5)

          i++;

          j+=i

    则只影响i++那一行。


5.  java的内存机制。

基础类型(byte,short,int,long,float,double,char,boolean)只占一块内存,除此之外的都叫引用类型。引用类型不同之处在于要占两块内存。

如:String s = new String("hello");

相当于String s;    s = new String("hello"); 分两步进行。

第一步String s 是现在内存中分配一块内存,所存值为null,因为还没有对s进行初始化

第二部 s = newString("hello");这时再在内存中分配一块内存(并且位于堆内存中,所有new出来的东西都在堆内存中,堆内存是动态分配的),得到真正的hello值,由s指向hello,相当于指针。

6.   this的简单用法

this表示对static方法可以直接从普通方法(regular method)中调用,但是普通方法不能直接从static方法中调用类内部中对自己的引用,方便类中方法访问自己的属性。

class a{
    int a;
    int b;
    
    public void getA(int a,int b){
        this.a = a;
        this.b = b;
    }
与下边的功能相同

class a{
	int a;
	int b;
	
	public void getA(int _a,int _b){
		a = _a;
		b = _b;
	}
}

7. static方法的简介
static方法可以直接从普通方法(regular method)中调用,但是普通方法不能直接从static方法中调用,这是因为
普通方法是对象的方面,static是类方法。类加载在前,对象实例化在后。

8.封装的简要应用

如若父类A中有private a1();         default a2();     protected a3();      public a4()      这四种方法。

则子类B【不管与A在不在同一个包中】继承A后,若想使用a3方法,则只能使用super方法。而对于a4(),直接使用也行,利用super方法也行。

9. 重载与重写的区别
重写指的是子类覆盖父类的方法,用于继承中
①重载指的是一个方法名对应多个方法;
②什么情况构成重载?形参列表不同(类型、个数不用)
③形参名称不同、返回值不同不构成重载

10.编程时,一般情况下,成员变量都必须私有,以private修饰,然后使用set/get方法

  对于set和get方法,set没有返回值,但有形参;get有返回值,无形参。例如:

   private int[] score;
   其对应的set/get方法为:

  

public void setScore(int[] score){
	this.score = score;
}
public int[] getScore(){
	return score;
}
然后

int[] score = {1,2,3,4};

s.setScore(score);
打印时用

System.out.println(s.getScore()[0]);
不要丢了s.getScore()后的[0],这个必须有,因为定义getScore()方法时就已经限制其前边为数组号。也可写为

public int getScore()[]{
	return score;
}

11.String为不可变字符序列
     StringBuilder:可变字符序列,线程不安全,效率高
     StringBuffer:可变字符序列,线程安全,效率低
     尽量不要使用
     String b = "a" + "c";
     这种形式,因为String为不可变字符序列,会在内存新建很多变量,效率低下,也浪费内存。而StringBuilder             和  StringBuffer只会新建一个,效率高,占用内存也少。


12.String方法中,substring()截取字符串时是掐头不掐尾,比如:

String str1 = "abcdefg";
String str2 = str1.substring(2,4);
    则str2为cd
     trim()只是去掉头部和尾部的空格,字符串内部的不管


13.类似
     String str = "a";
     建出来的都为字符串常量,它不是new出来的位于方法区[内存中有栈、堆、方法区],而对于

String a1 = new String("a");
String a2 = new String("a");
     这种的,由于new出来的都位于堆内存,所以两个"a"虽然内容相同,但处于不同的位置。
System.out.println(a1 == a2);为false
System.out.println(a1.equals(a2));为true
     因为a1和a2指向了不同的新的字符串变量

String a3 = "b";
String a4 = "b";
这种的,"b"位于方法区,并且两次都指向的为同一个,所以
System.out.println(a3 == a4);为true
System.out.println(a3.equals(a4));为true
因为a3和a4指向了常量池中的同一个对象



14.数组一旦被创建,它的长度就不能改变。并且声明数组时,不能指定其长度,只有在实例化时才会分配空间。
     如:int[5] a;   就是非法的。


15.数组的三种初始化方法

   ①静态初始化

int[] a = {1,2,3};//静态初始化的省略写法
Man[] mans = {
		new man(1,2),//注意为逗号而不是分号
		new man(2,3)
	      };

静态初始化的完整写法为:

 

int[] arr = new int[]{1,2,3};//不要忘了右边的[]
此时可分开写:
int[] arr;
arr = new int[]{1,2,3};//不要忘了右边的[]

但简略写法却不能这样写

int[] arr;
arr = {1,2,3};//会报错


  ②动态初始化    

int[] a = new int[2];
a[0] = 1;
a[1] = 2;
    ③数组的默认初始化
int[] a = new int[2];//默认值为0,0
boolean[] b = new boolean[2];//默认值为false,false



16.接口是一种抽象的类,只包含常量和抽象方法,没有变量和方法的实现



17.多态是指父类的引用可以指向子类的对象.在使用时,new的谁就调用谁的方法,这就是动态绑定(也叫多态).
A a2=new C();--------A 的引用a2 指向newC;所以a2.m1是调用C类里的m1()方法;



18.表示年月日一般用yyyy-MM-dd,其中MM不能小写,因为m表示分钟

 

19.补充:String与StringBuilder的区别

举个例子:

string s="aa"; s +="bb"; 则内存中存在了aa  bb  aabb 三个
stringbuilder ss="aa"; ss.Append("bb")。则内存中只有两个 "bb"和"aabb" 此处少了一个"aa",其实是因为stringbuilder是可变的,"aa"变成了"aabb",而不是重新分配 新空间。

为什么是stringbuilder比string好,还是存在string。因为stringbuilder是引用类型的,一开始分配的 时候需要比较多的空间,而string是值类型的。这个有点struct与class的利害比较了。如果不是频繁拼接的情况下,string的性能明显 好于stringbuilder,所以如果频繁拼接就用stringbuilder,如果是展现那么用string。


20.容器中判断重复元素不是利用地址比较,而是equals和hashcode方法
     对于自动装箱和拆箱,在1.5以后就可以无视int和Integer的差别了,直接套用就行

补充:调用父类的构造函数用super(),在语法上要求放在第一行。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值