你好,我是goldsunC
让我们一起进步吧!

上一篇文章介绍了Java的基础数据类型和引用数据类型中的数组,引用数据类型除了数组之外,还包括类和接口
那什么是引用数据类型呢?看个例子:

public class Test {public static void main(String[] args) {int[] a = {1,2,3};int[] b = a;a[0] = 0;System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(b));}
}
OUT:
[0,2,3]
[0,2,3]

相信不少同学看到这儿就已经明白了,上面程序首先定义了一个整型数组a,初始化为1,2,3。然后让数组b等于a,再让a的第一个元素改为0,分别打印a和b,发现a和b一模一样。
对,我们没有对b直接进行操作,但是b也变了。下面简单说下基本数据类型和引用数据类型的区别。

基本数据类型

基本数据类型在被创建时,在栈上给其划分一块内存,其数值直接存储在栈(Stack)上,每一个基本数据类型都有自己相应的栈空间,当把一个基本数据类型给另一个基本数据类型时,只是把栈里面的赋给了它,新的那个基本数据类型会在栈上重新开辟一块空间,两个数据并不相同

引用数据类型

引用数据类型在被创建时,首先要在栈上给其引用(也就相当于上面程序中的a和b)分配一块内存,而两个引用指向的对象具体信息都存储在堆上,只不过是有栈上面的引用指向了堆中对象实体的地址。

类的定义

Java是一门完全面向对象的语言,写Java程序主要就是定义各种类。类是现实时间中各种对象的抽象,它表明对象的属性及行为。在程序中,对象的属性用变量来表示,对象的行为用函数表示。类中的变量称为字段或者(field)。类中的函数称为方法。

一个类的定义从class关键词开始,关键词后跟着类的类名,如下:

class IMCLASS{;
}

在类里面应包括字段和方法,一个类中可以定义多个字段和方法。

构造方法

在程序中经常需要创建对象,在创建对象的同时将会调用这个对象的构造方法来完成对象的初始化。

  • 构造方法:这是一种特殊的、与类同名的方法,只用于对象的初始化工作,构造方法主要有以下几点不同于其它方法的特点:
  • 构造方法的方法名一定与类名相同。
  • 构造方法没有返回值,定义时也不能写void
  • 构造方法的作用就是完成对象的初始化。
  • 构造方法和其它方法调用方法不同,若需调用应用new,即创建一个对象。
  • 在创建一个类的实例时,系统自动调用类的构造方法。

如下一个示例:

class goldsun{String name;int age;goldsun(String name,int age){this.name = name;this.age = age;}
}

如上程序定义了一个类goldsun,其构造方法名也是goldsun,括号内是在创建类对象时应该传入的参数。
如果想创建一个如上类的对象,应该这样:

goldsun C = new goldsun('CKN',20);
System.out.println(C.name+':'+C.age);OUT:
CKN:20

默认构造方法

一般情况下,类都有一个或者多个构造方法,而在定义类的时候也不一定非要定义构造方法,如果在定义类的时候没有定义构造方法,那么系统会自动为这个类产生一个构造方法,称为默认构造方法(default constructor)。
例如如果上面定义的类goldsun没有定义构造方法的话,系统会默认产生一个如下的构造方法:

goldsun(){}

对,没有参数,也没有方法体。
而如果类前面有public修饰符的话,默认构造方法前面也会是public的。

使用类

定义类就是为了使用,要想创建类对象需要先声明,声明一个对象的方式与声明基本数据类型的变量类似,其格式如下:类名 变量名;
给类分配内存需要用到new运算符,格式如下:变量名 = new 构造方法(参数);
而以上两句也可以合写成一句话:类名 变量名 = new 构造方法(参数);
如:goldsun C = new goldsun('CKN',20);new是新建运算符,它以类为模板,开辟内存空间并执行相应的构造方法。new用来实例化一个对象,返回的是该实例对象的一个引用,引用指向该对象实体的内存地址。因此上例中把a赋给b,只是把a指向的地址赋给了b,那b和a就指向了同一个对象,而a和b它们俩并不是一个东西

构造方法重载

构造方法也可以重载,要求使用不同的参数个数、不同的参数类型、不同的参数类型顺序。构造方法的重载,使得用户可以使用不同的参数来实例化对象。如下:

goldsun(String name,int age){this.name = name;this.age = age;
}
goldsun(String name){this.name = name;this.age = 0;
}

前一个构造方法带有姓名年龄信息,而后一个构造方法有姓名信息,年龄信息默认为0。
在实例化对象的时候,系统根据传入的参数自动选择相应的构造方法。

this的使用

在类中,有一个关键词this,它没有什么特别意义,它唯一的意义是指这个实例对象本身,不管它怎么被使用,只要看见它理解成这个对象本身就行。它有一些作用:

  • 使用this来访问字段和方法:在类中,可以通过使用this来访问类中的字段和方法,如下:
class XXX(){int C = 10;boolean isEmpty(){return false;}void PRINT(){System.out.println(C);System.out.println(this.C);System.out.println(isEmpty());System.out.println(this.isEmpty());
}
//创建实例XXX x = new XXX();x.PRINT();
OUT:1010falsefalse
}

  • 使用this解决局部变量或参数变量与字段变量同名的问题,如上例中的this.name = name;,就是这个问题。
  • 在构造方法中,使用this调用另一构造方法。
    如:
goldsun()
{this('CKN',20);
}

  • 如果在构造方法中调用另一构造方法,则这条调用语句必须放在第一句。

实话实说,对你是不是很简单的知识点?

关于类还有很多很多复杂的问题,如继承、类对象转换、抽象类、匿名类、内部类等等等等,除了类,接口也是引用数据类型,这些以后再写。感谢阅读。

new 一个模板、类_Java必备基础-类(Class)相关推荐

  1. java基础教程 类_Java零基础系列教程06初识类和对象

    配套视频教程 万物皆对象 分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类 身边的对象 顾客 姓名-张浩 年龄-20 体重-60kg 操作: 购买商品 收银员 员工号-10001 ...

  2. java程序分为哪两大类_JAVA程序基础(第1-2章分类)复习-1

    JAVA基础理论辅助消化练习题 (蓝色的不做) 练习一(类java程序) 1.J ava是低级语言还是高级语言? 2.J ava是面向对象的程序设计语言吗? 3. J ava是编译型的计算机语言还是解 ...

  3. java编写一个动物类_Java编程 实现类的继承与多态 写一个动物类。成员变量为动物的种类,成员方法是动物叫声。...

    感觉写得够详细了,如果不懂M我abstract class Animal { //动物的种类用变量n表示 String n; //动物的声音用变量s表示 String s; //在这里声明了一个抽象方 ...

  4. java创建一个人函数类_Java对象和类–学习如何创建和实现

    对象和类被认为是任何基于OOPs的语言的精华.由于Java是最常用的面向对象编程语言之一,因此非常有必要牢记这些概念.因此,我为您带来这篇文章,在这里我将给您一个完整的Java对 对象和类被认为是任何 ...

  5. java unsafe 类_Java的Unsafe类

    本文转载自:https://www.cnblogs.com/pkufork/p/java_unsafe.html 最近在看Java并发包的源码,发现了神奇的Unsafe类,仔细研究了一下,在这里跟大家 ...

  6. java 添加类_java如何添加类

    Java JDK的安装以及CLASSPATH设置系统变量 Java JDK的安装以及CLASSPATH设置系统变量向你介绍如何在Windows条件下进行Java JDK的安装以及CLASSPATH系统 ...

  7. java简单通讯录的实现02person类_Java中Math类的简单介绍

    我想对于Math类大家一定很熟悉了,是Java提供的一个用来进行简单数学运算的工具类.对于Math类来说,常用的方法有: 加法 public static int addExact(int x, in ...

  8. java 反射 本类_Java 反射 Class类

    Java 反射 Class类 @author ixenos 摘要:Class类在反射中的地位.构造Class对象的三种方式.Class对象构造对应类型对象的三种方式 Class类在反射中的地位 位于j ...

  9. java 系统 类_Java常用实体类--System类

    字符串.日期.数字是Java程序中最常使用的数据对象,对这些数据的创建.修改.格式化和转换等操作融入在Java程序的每个角落,必须熟练掌握.本节将通过实例演示以下常用实体类Java系统级类:系统类Sy ...

最新文章

  1. sock 文件方式控制宿主机_nginx与php-fpm通信的两种方式
  2. 干货丨深度学习VGG模型核心拆解
  3. 安装 Docker 一
  4. Win10隐藏硬盘分区
  5. windows下的sysprep
  6. ksql 数量大于2_别人1加1大于2大于3,雍禾植发1加1小于2……
  7. ACL 2019开源论文 | 句对匹配任务中的样本选择偏差与去偏方法
  8. 记录 之 整形数除整形数 产生的数据依然是整形,难搞哦
  9. swift5导航栏标题文字属性设置
  10. 1.7_heap_sort_堆的向下调整堆排序
  11. Meinheld 和 Gevent_XYM
  12. FastDFS+Nginx部署详细教程
  13. 小程序源代码 古诗词
  14. P1217 [USACO1.5]回文质数 Prime Palindromes(打表)
  15. java中throw是什么意思_Java中throw和throws的区别是什么
  16. 高可用的“异地多活”架构设计
  17. python进阶练习之——复读机相加
  18. 笑话之“一头慷慨赴死的猪”。
  19. CSS基础 外部样式表 内嵌样式表 行内样式表
  20. vba抽奖ppt 深蓝计协电竞大赛

热门文章

  1. Git commit后,本地代码丢失解决方法
  2. Android 隐式意图的配置
  3. 2013与2014之流水
  4. 表单文本框提示字符点击时清空
  5. Lab 6:uC/OS II
  6. JavaScript this 小结
  7. 【汇总】flash单个文件上传
  8. rh9.0虚拟机dmesg启动过程分析(1)
  9. 手机被锁在耳机模式了
  10. PCIE总线-PCI、PCIE关系及信号定义