Java 学习笔记(一)

来源:互联网 发布:js foreach 获取index 编辑:程序博客网 时间:2024/05/21 22:38

构造函数不能有返回值,即使加void也不行,因为void代表的是返回值为空

 

引用是一种数据类型,是对象的别名,引用并不等于对象。(相当于C语言里的指针)

 

关于方法的重载,类型个数 次序不同,三点中实现至少任意一点,就能构成方法的重载。

返回类型不同,不构成方法重载,因为系统不能判别该调用那个构造函数、

 

静态变量属于类,而不属于对象

 

静态变量和静态方法,在Eclipse当中,字体会变斜。同时,在实际编程当中,应当使用类名去访问,这样做有助于区分是否是静态方法或静态类。

 

静态代码块,(static{……..}),静态代码块在所有构造方法之前执行,并且只执行一次

 

计算机内存模型分为:栈内存(顺序结构)和堆内存(离散结构),基本数据类型,都是在栈内存中分配,而引用数据类型都是在堆内存里面分配的。

 

匿名对象就是没有引用的对象,就是没有起别名的对象(new Person();),但是这个对象仍旧在堆内存当中真实存在

 

设计类时的方法:

首先设计属性,再设计方法,属性用名词,方法用动词。考虑构造方法的重载,同时要保留不带参数的构造方法。最后要有适当的颗粒度。

 

String类有两种初始化的方法,一种是静态初始化,还有一种是动态初始化。

//静态初始化:String str1=”hello world!”;//动态初始化:  String str2= new String(“hello world”);

静态初始化分配在字符串常量池里,而动态初始化分配在堆内存中。而字符串常量池在堆内存当中。

 

对于静态初始化而言,若两个字符串的内容相同时,他们所指向的内存空间相同,及str1=str2,所返回的布尔值是true。而动态初始却是新建一个对象,无论内容是否相同。

public class StringDemo {public static void main(String[] args) {//静态初始化字符串String s1 = "hello china!";String s3 = "Hello China!";System.out.println(s1);//动态初始化字符串    String s2 = new String("hello china!,china,china");    String s4 = new String("hello china!");    String s5 = "hello Japan";    String s6 = "Hey,"; //Hey,hello china!    String s7 = "北京|上海|南京|武汉|成都";        System.out.println(s1==s3);//true    System.out.println(s2==s4);//false    System.out.println(s2.equals(s4));//true        System.out.println(s1.charAt(6));//获得字符'c'    //返回0:s1==s5, 负数  s1<s5  正数 s1>s5    System.out.println(s1.compareTo(s5));    System.out.println(s6.concat(s1));    System.out.println(s6+s1);        System.out.println(s1.contains("china"));//true    System.out.println(s1.contains("japan"));//false        byte[] arr = s1.getBytes();    System.out.println(s2.indexOf("china"));    System.out.println(s2.lastIndexOf("china"));        String[] citys = s7.split("\\|");    for(int i=0;i<citys.length;i++)    {    System.out.println(citys[i]);    }    StringTokenizer st = new StringTokenizer(s7,"|");    System.out.println("-------------------");    while(st.hasMoreElements())    {    System.out.println(st.nextElement());    }第一个参数表示开始的下表,并且包括第二个参数表示结束的下表,但是并不包括。    System.out.println(s1.substring(6,s1.length()-1));    System.out.println(s1.toUpperCase());    System.out.println(s3.toLowerCase());}}

在进行应用传递的时候,实参是把自己的的哈希code传递给形参,就相当于实参和形参所指向的是同一个对象,所以可以更改实参的内容。但是形参并不能改变实参所指向的对象,比如说,让形参new下,新指向一个对象,这样就改变了形参的哈希code,这样的话,形参和实参就分别指向两个不同的对象

 

This关键字可以调用构造方法(必须放在构造方法的第一句)和指向当前对象

 

Java源程序当中,可以设计多个类




0 0
原创粉丝点击