前言
最近又闲下来了,无意间在其他博客看见几篇java基础的文章,发现自己好多都忘记了。趁有时间就自己再回顾复习一下,所以接下来的文章都是基于前辈们的博客加上自己的思路进行整理记录,有问题欢迎指正。
正文
面向对象是java的最大特征之一,接下来主要从以下几个方面进行介绍:
- java类的定义
- 成员变量
- 引用
- 构造方法
一,java类的定义
//用class关键字定义一个类
class Student{
//定义成员变量
private String name;
private int age;
//定义方法
public void setName(String name){this.name=name}
public void setAge(int age){this.age=age}
public String getName(){return name;}
public int getAge(){return age;}
}
JAVA里面有class关键字定义一个类,后面加上类名。上面定义了一个student类,然后定义这个类应该具有的成员变量(即属性)和方法,上面定义了的String name和int age这个两个成员变量,或者叫属性。这样就在student这个类里面定义了两个应该有的属性,还定义了几个方法分别setName(String name)、setAge(int age)和getName()、getAge(),分别用来设置和获取学生的姓名和年龄。
二,成员变量
在JAVA里面的任何变量首先应该要声明,然后再赋值,然后再使用。成员变量和局部变量有一个重要区别:成员变量在类里面声明时如果不进行初始化,那么JAVA会默认给它初始化,而局部变量JAVA不会默认给它初始化,所以在方法里面声明一个局部变量如果不给它初始化时就会出错
。默认初始化大多数都是0,boolean类型的为false,引用类型的为null,也可以直接打印成员变量看默认初始化的值。
三,引用
Java语言除了基本类型之外的变量类型都称之为引用类型,java中的对象是通过引用对其操作的。Java的基本数据类型包括整数型、浮动型、布尔型、字符型这四类。
具体过程看下图:
引用
-
如何在内存中区分类和对象
:
1.类是静态的概念,在代码区中。
2.对象是new 出来的,位于堆内存中。
因为堆内存是用来动态分配内存的,只有在运行当中才会new一个对象放堆内存里面,对象有多大,你不知道,所以你没有办法提前分配内存给这个对象,只有在运行期间,才能够明白这个对象到底要分配多大的空间给它,所以把它放在堆内存里面,堆内存比较大,动态分配内存用它。如果对象不用了,当垃圾回收,释放掉占用的内存。
记住,以后一提到引用,脑子里马上浮现引用那就是一小块内存指向一大块内存。即栈内存指向堆内存。
-
引用类型和基本类型有着巨大的区别:
当声明一个int age=0时,系统会马上给这个age分配一个内存空间(在栈内存里面分配一小块区域用来装数字0),里面装着一个值为0,以后使用age这个名字马上就可以访问这个内存空间里面的值,这就是基本数据类型,所以基础类型就只占一块内存。基础类型之外的类型全都叫引用类型,我们定义一个String s,这个s就是一个引用类型的数据,而引用类型占2块内存(原来的s在栈内存中,new之后在堆内存中
)。需要使用new关键字把这个类的对象实例化出来,才能使用这个对象。
四,构造方法
构造方法用来创建一个新的对象,和new组合使用。New一个对象的时候实际上调用了构造方法,构造一个新的对象的方法叫构造方法。构造方法的名字和类名一模一样,没有返回值,没有修饰符。如下所示:
//用class关键字定义一个类
class Student{
//定义成员变量
private String name;
private int age;
//定义一个构造方法
public Student(String name,int age){
this.name=name;
this.age=age;
}
//main函数中结合new调用构造方法
public static void main(String args[]){
Student a = new Student('tom',22);
}
}
下面是在main方法里面调用构造方法时的内存分析情况:
当方法调用完成之后,栈里面为它分配的空间全部都要消失,即把这个方法调用时分配给它的内存空间释放出来,所以这个构造方法student调用完成之后,栈内存里面分配的两小块内存name和age就释放出来了,而new出来的对a象则永远留在了堆内存里面。
在平时的开发中我们发现我们new对象的时候,比如Student s = new Student()发现系统并没有给我们提供构造方法这是因为:声明一个类,若没有在类中指定其构造方法,编译器会为这个类自动添加一个空的构造方法。一旦给这个类里面指定了构造方法,那么系统就不会再给这个类添加构造方法了
。
原创作者:凌小样
作品链接:https://www.jianshu.com/p/a4820eefa075
【原创不易,转载请注明出处,感谢理解】
一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友
网友评论