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

JAVA随笔 一 Java面向对象基础和String

2018-04-02 21:53 344 查看
Java代码处理过程
.java-->编译--->.class---->解析---->.运行程序(虚拟机处理)
JRE:Java Runtime Environment
Java编程规范:每一个操作后都添加一个空格
方法的重载:方法名相同,但是参数个数或者参数类型不同,两者都不同也可以
面向对象:
封装性:1,把对象的属性和行为包装成一个整体
             2,把不希望外界访问的信息隐藏
继承性:首先设计一个具有描述一般特征事物的类,再此基础上去定义具有特殊属性的事物的类
多态性:1,方法的重载
             2,子对象和父对象的互相转换
static在方法上声明的情况:不是由对象调用的方法添加static,反则反之

引用类型与堆栈内存: String 类 数组 等

栈:存储堆内存的地址数据
堆:存储具体对象的属性值

为什么一般的对象可以用"=="直接比较而String对象却一般不行?
一般对象如数组,CLASS对象比较用"==",都是直接在比较栈内存数据是否相同,而一般对象都是直接拷贝,所以多个栈内存指向同一个堆内存。String对象一般是新建堆栈存储,如 String str = new String("world") ;故栈存储不同,即使是相同的值,也不相同。String为了解决这个问题定义了如下方法:
public boolean equals(String str);  该方法用来比较String字符串,注意:该方法有NULL检测
匿名对象:没有栈对象指向堆内存的对象

字符串常量的特殊性:
举例 : "hello".equals("hello");  可以发现equals是一个方法,只有对象可以调用方法,这里说明"hello"是一个对象,但是并没有定义String对象,故不存在栈存储,所以只有堆内存。说明字符串常量是一个匿名对象
String类两种构造方法的区别(重)
直接赋值方式:String st r= "hello" ; 可知"hello"可以看作一个匿名对象,会有自己的堆内存,这里str对象的栈内存就指向这块内存。由此:该方法值开辟一块堆空间,并且存入内存池。
构造方法:String str = new String("hello") ; "hello"匿名对象有一个堆内存,但是new标识符一定会开辟一块堆内存(该内存不会加入内存池,但可以用intern方法手动加入内存池),而且str对象的栈内存指向new开辟的堆内存,那么这里就有两块堆内存,且"hello"的堆内存会标志为垃圾。
举例1:

String str1 = new String ("hello")  ;
String str2 = "hello" ;

判断 str1 == str2  结果为 false

举例2:

String str1 = new String ("hello").intern()  ;
String str2 = "hello";

判断 str1 == str2  结果为 true

简单JAVA类(原则上JAVA类都要实现以下几点)
1,类名 

2,所有属性都为private并实现对应的gettter和setter方法
3,在类中没有任何输出
4,保留一个无参构造方法
5,提供一个获取类中所有属性的方法返回String
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: