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

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值