一个程序的内存划分:
栈内存:存放对象名称,实际上是存放的对堆的引用地址;
堆内存:存放属性;
全局代码区:存放所有的操作方法;
全局数据区:存放所有的static属性。
数组的命名:
数据类型 数组名称[] = new 数据类型[数组长度];
面向对象的三大特征其实是有顺序的,依次是:封装、继承、多态。【慢慢理解……】
String的两类构造方法:
String str1 = new String("Hello");
或者:String str2 = "world";
以上两种构造方法是有区别的,第一种方法会在执行的时候开辟两个内存空间,第二种方法则是开辟了一个内存空间。因此在初始化String对象的时候尽量不要使用String str1 = new String("Hello");这种方法。
"==" & equals()
“==”在比较字符串的时候是比较两端变量的地址值,而equals()则比较的是两端变量的值。因此在比较字符串的时候只能使用equals而不能使用==。
字符串的内容一旦声明之后是无法修改的,我们看到的字符串变量的改变仅仅是改变了内存空间的地址指向,实际上的内容还是停留在内存里面等待JVM回收机制的回收。
以下类似方法禁止使用,会造成程序运行效率非常低下:
String str = "Hello";
for(int i = 0 ; i < str.length(); i++ ){
str += i ; //这样做会使字符串变量和实际的字符串存放内存断开链接和重新建立链接100次。。。
}
String类常用操作方法:
charAt();tochararray(); concat(); getbytes();startswith();endswith();replaceall();substring();split();indexof();contains();trim();touppercase();tolowercase();length();
更多方法请查看相关版本的API:
1.7 http://download.youkuaiyun.com/detail/liuzhaopds/3681194
1.5 http://download.youkuaiyun.com/detail/liuzhaopds/3681176
注意java中“|”表示或操作,如果想要字符串按照“|”来分离的话,必须在“|”前面使用“\\”来构成“\\|”。只有这样才能实现字符串按照“|”分离。
this关键字用来表示当前对象。this()如果想用在构造方法中必须写在构造方法的第一行,并且构造方法不能递归调用。
static关键字:static方法只能调用static属性和方法,不能调用非static属性和方法,因此在public static void main(String args[]){...}中类以外的方法如果想要被main方法调用,则必须输入static关键字。
分析:public static void main(String args[]){...}
public 表示公有
static 表示静态
void 表示无返回值
main 是系统内建的方法名
String args[] String类型的数组,用于接收java 文件名 参数1,参数2,。。。中的参数。
系统退出的命令是system.exit(1)。括号中可以写任意非零参数。
声明一个对象数组: 类名称 数组名称[] = new 类名称[数组长度];
只允许被实例化一次的类的设计:
class Single{
private static Single instance = new Single() ;
private Single(){ // 将构造方法私有化
}
public static Single getInstance(){
return instance ;
}
public void print(){
System.out.println("hello world!!!") ;
}
};
public class SingleDemo{
public static void main(String args[]){
Single s = null ; // 声明对象
s = Single.getInstance() ; // 实例化对象
s.print() ;
}
};
static可以统计一个类的实例化次数,也可以对类中的属性自动命名。