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

cbb778101308cd7fcc5984283bb7d769.png

你好,我是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);
}
  • 如果在构造方法中调用另一构造方法,则这条调用语句必须放在第一句。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华北电力大学计算机科学与技术考研,华北电力大学吴克河教授谈计算机科学与技术专业...

导语:读万卷书不如行万里路,行万里路不如名师点悟。选导师也是个大学问——择师而师,不可草草。为此我们特邀请众多精英导师,我们期待他们的亲身经历和观点建议,能够给考研路上的你以参考……华北电力大学计算机科学与…

怎样让防火墙跟其他网络设备实现时钟同步

怎样让防火墙跟其他网络设备实现时钟同步 一方面,如果网络设备上的时间不一致,如路由器跟防火墙的时间相差十分钟,则在故障排除的时候,就会很麻烦。因为防火墙或者路由器上都有事件日志,在这些日志上会反映相关的故障信…

安卓APP_ 控件(4)—— ImageView

摘自:安卓APP_ 控件(4)—— ImageView 作者:丶PURSUING 发布时间: 2021-03-29 21:52:06 网址:https://blog.csdn.net/weixin_44742824/article/details/115311375 开篇:安卓APP_ 控件&#xff0…

使用python的openpyxl模块操作excel

openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易 openpyxl的安装 模块的引入 from openpyxl import Workbook from openpyxl.styles import Color, Font, Alignment from openpyxl.styles import B…

python日志配置文件解释_python 之 logger日志 字典配置文件

importosimport logging.config #不能只导入loggingBASE_DIRos.path.dirname(os.path.dirname(__file__))#DB_PATHos.path.join(BASE_DIR,db)#DB_PATHr%s\db %BASE_DIR#定义日志文件的路径LOG_PATHos.path.join(BASE_DIR,log,access.log)#LOG_PATHr%s\log\access.log %BASE_DIR…

最常用计算机信息呼唤标准代码,计算机考试题

1.Powerpoint中,在幻灯片浏览视图下,按住Ctel键并拖动某一幻灯片,可以完成(D)A. 移动幻灯片B. 选定幻灯片C. 删除幻灯片D. 复制幻灯片2.在Powerpoint中,为所有幻灯片设置统一的、特有的外观风格,应运用(A)A. 母版 B. 自…

awk一些很恐怖的特性

使用也可以产生值 echo "" | awk END{a[1]1;x a[2];print length(a);print a[3];print length(a)} 打印结果是:2 空行 3 这个awk的数组元素居然是3!!就是说使用数组也是定义数组!!!这很恐怖&…

安卓APP_ 控件(5)—— ProgressBar

摘自:安卓APP_ 控件(5)—— ProgressBar 作者:丶PURSUING 发布时间: 2021-03-31 13:03:07 网址:https://blog.csdn.net/weixin_44742824/article/details/115313496 控件ProgressBar就是对进度条的设定&…

sql 写query_为什么需要动态SQL

为什么需要动态SQL在使用 EF或者写 SQL语句时,查询条件往往是这样一种非常常见的逻辑:如果客户填了查询信息,则查询该条件;如果客户没填,则返回所有数据。我常常看到很多人解决这类问题时使用了错误的静态 SQL的解决办…

湖南大学计算机学院张柏杨,缪力-湖大信息科学与工程学院

[1]Li-Hui XIANG, Li Miao,Da-Fang ZHANG, Feng-Ping CHEN. Benefit of Compression in Hadoop: A CaseStudy of Improving IO Performance on Hadoop. 2014 IEEE International Conferenceon Industrial Engineering and Information Technology (EI/ISTP)[2]向丽辉…

AMBA总线协议AHB、APB

一、什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用…

CentOS安装SVN服务器并配置HTTPS连接

在CentOS6.3 64位机器上配置SVN服务器,并设置只允许HTTPS连接,可以配置多个repos源,每个源都拥有自己的组和成员,用于权限控制。安装相关软件Apacheyum install httpd httpd-devel Subversionyum install mod_dav_svn subversionS…

安卓APP_ 控件(6)—— Notification通知

摘自:安卓APP_ 控件(6)—— Notification通知 作者:丶PURSUING 发布时间: 2021-04-02 00:30:14 网址:https://blog.csdn.net/weixin_44742824/article/details/115382674 Notification通知的使用 一、创建一…

安卓APP_ 控件(7)——Toolbar栏目样式

摘自:安卓APP_ 控件(7)——Toolbar栏目样式 作者:丶PURSUING 发布时间: 2021-04-02 15:42:07 网址:https://blog.csdn.net/weixin_44742824/article/details/115395997 Toolbar栏目样式 什么是Toolbar?设置…

电大计算机本科离散数学考试题,国开(中央电大)本科《离散数学(本)》网上形考(任务一至三)试题及答案...

《国开(中央电大)本科《离散数学(本)》网上形考(任务一至三)试题及答案》由会员分享,可在线阅读,更多相关《国开(中央电大)本科《离散数学(本)》网上形考(任务一至三)试题及答案(10页珍藏版)》请在装配图网上搜索。1、国开(中央电大)本科离散数学(本)网上…

luogu4267 TamingtheHerd (dp)

设f[i][j]为让前i天发生j次暴动需要改变的最少的值 则f[i][j]min{f[k][j-1](x[k1]!0)(x[k2]!1)...(x[i]!(i-k-1))} $O(n^3)$直接做就好了 1 #include<bits/stdc.h>2 #define pa pair<int,int>3 #define ll long long4 using namespace std;5 const int maxn105;6 7…

Gartner:2013年SIEM市场分析(MQ)

2013年5月7日&#xff0c;Gartner一年一度的SIEM magic quadrant报告出炉了。如下图&#xff1a;对比一下去年的MQ矩阵&#xff1a;简言之&#xff0c;上榜厂商减少到16个&#xff0c;Q1Labs在三强竞争中稍占上风&#xff0c;Arcsight有所退步&#xff0c;Splunk终于跻身第一阵…

python sqlite数据库_用Python进行SQLite数据库操作

简单的介绍SQLite数据库是一款非常小巧的嵌入式开源数据库软件&#xff0c;也就是说没有独立的维护进程&#xff0c;所有的维护都来自于程序本身。它是遵守ACID的关联式数据库管理系统&#xff0c;它的设计目标是嵌入式的&#xff0c;而且目前已经在很多嵌入式产品中使用了它&a…

dijstra算法

无向图、赋权有向图 的最短路径转载于:https://www.cnblogs.com/xiaoxuesheng993/p/9632555.html

北林计算机考研真题答案,真题解析|『北林』2020年考研初试真题

原标题&#xff1a;真题解析&#xff5c;『北林』2020年考研初试真题真题解析&#xff5c;『北林』2020年考研初试真题前言从今年的考试题型来看未做改变&#xff0c;(选择、名词解释、简答、论述)但分数分布略有更改。从考试内容来看&#xff0c;基本持平于去年的难易程度&…