java arraylist char,Java基础学习笔记六 Java基础语法之类和ArrayList详解

引用数据类型

引用数据类型分类,提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类、Random类。

我们可以把类的类型为两种:

第一种,Java为我们提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供我们使用。

第二种,我们自己创建的类,按照类的定义标准,可以在类中包含多个方法与属性,来供我们使用。

这里我们主要介绍第二种情况的简单使用。

自定义数据类型概述

在Java中,将现实生活中的事物抽象成了代码。这时,我们可以使用自定义的数据类型(类)来描述(映射)现实生活中的事物。

类,它是引用数据类型,与之前学习的所有引用数据类型相同,自定义类也是一种数据类型。只是自定义类型并非Java为我们预先提供好的类型,而是我们自己定义的一种引用数据类型用来描述一个事物。

类的定义与使用

java代码映射成现实事物的过程就是定义类的过程。

我们就拿一部手机进行分析,它能用来做什么呢?它可以打电话,上网,聊微信等,这些就是手机所提供的功能,也就是方法;手机也有它的特征,如颜色、尺寸大小、品牌型号等,这些就是手机的特征,也就是属性。

目前,我们只关注类中的属性,类中的方法在面向对象部分再进行学习。

类的定义格式

创建java文件,与类名相同

public class类名{

数据类型 属性名称1;

数据类型 属性名称2;

}

通过类的定义格式,来进行手机类的描述,如下所示

public classPhone {/** 属性*/String brand;//品牌型号

String color;//颜色

double size; //尺寸大小

}

上述代码,就是创建一个类的的过程,类的名称我们给起名为Phone,类中包含了三个属性(brand品牌型号、color颜色、size尺寸大小)。注意,类中定义的属性没有个数要求。

类的使用格式

Phone类定义好后,我们就可以使用这个类了,使用方式和使用引用数据类型Scanner类相似。格式如下:

导包:我们将所有的类放到同一个文件夹下,可以避免导包;

创建对象:数据类型 变量名 = new 数据类型();

调用方法:目前我们定义的自定义类不涉及方法,只是属性;

访问属性:变量名.属性 (这是当前的方式,后期会采取调用方法的方式替代掉直接访问的方式来完成对属性的访问。)

当有了Phone数据类型的变量后,我们就可以使用Phone类中的属性了。对属性的访问我们来演示一下,如下所示:

packagearraylist;public classTest {public static voidmain(String[] args) {//定义了一个Phone类型的变量p

Phone p = newPhone();/** 通过p,使用Phone中的属性*/

//访问p中的brand品牌属性

p.brand = "苹果6s";//为p中brand属性赋值为 苹果6s//访问p中的color颜色属性

p.color = "白色";//为p中color属性赋值为”白色”//访问p中的size尺寸大小属性

p.size = 5.5;//为p中size属性赋值为5.5

System.out.println("手机品牌为" +p.brand);

System.out.println("手机颜色为" +p.color);

System.out.println("手机尺寸大小为" +p.size);

}

}//手机品牌为苹果6s//手机颜色为白色//手机尺寸大小为5.5

自定义类型注意事项与内存图

上述代码中,通过类Phone创建出来的变量p,它相当于我们生活中的盒子,里面包含了它能够使用的属性。

通过 p.属性名 就可以对属性进行操作

与引用类型数组类似,引用类型的自定义类型的变量,直接变量时,结果为对象地址值,这里可以通过内存图简单解释。

fff6c98081bf8904098fb5e1bd59ff4b.gif

下面再来看看某个类创建两个对象的内存图:

fff6c98081bf8904098fb5e1bd59ff4b.gif

ArrayList集合

在前面我们学习了数组,数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变。为了保存这些数目不确定的元素,JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合。在这里,我们先介绍ArrayList集合,其他集合在后续课程中学习。

ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

集合的创建

创建集合的常用格式在此说明一下:

1、导包:import java.util.ArrayList;

2、创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:

3、ArrayList 变量名 = new ArrayList();

集合中存储的元素,只能为<>括号中指定的数据类型元素;

“”中的数据类型必须是引用数据类型,不能是基本数据类型;

下面给出8种基本数据类型所对应的引用数据类型表示形式:

基本数据类型 对应的引用数据类型表示形式

byte——>Byteshort ——>  Short

Int  ——>Integerlong ——>  Longfloat ——>  Floatdouble ——>  Doublechar ——>  Characterboolean ——>  Boolean

我们通过举几个例子,来明确集合的创建方式:

//存储String类型的元素

ArrayList list = new ArrayList();//存储int类型的数据

ArrayList list = new ArrayList();//存储Phone类型的数据

ArrayList list = new ArrayList();

集合中常用方法

接下来,我们来学习下ArrayList集合提供的一些常用方法,如下:

booleanadd(Object obj) //将指定元素obj追加到集合的末尾

Object get(intindex) //返回集合中指定位置上的元素int size()        //返回集合中的元素个数

下面通过代码演示上述方法的使用。ArrayListDemo01.java

packagearraylist;

importjava.util.ArrayList;public classArrayListDemo01 {public static voidmain(String[] args) {//创建ArrayList集合

ArrayList list = new ArrayList();//向集合中添加元素

list.add("stu1");

list.add("stu2");

list.add("stu3");

list.add("stu4");//获取集合中元素的个数

System.out.println("集合的长度:" +list.size());//取出并打印指定位置的元素

System.out.println("第1个元素是:" + list.get(0));

System.out.println("第2个元素是:" + list.get(1));

System.out.println("第3个元素是:" + list.get(2));

System.out.println("第4个元素是:" + list.get(3));

}

}//集合的长度:4//第1个元素是:stu1//第2个元素是:stu2//第3个元素是:stu3//第4个元素是:stu4

强调一点,ArrayList集合相当于是一个长度可变的数组,所以访问集合中的元素也是采用索引方式访问,第一个元素存储在索引0的位置,第二个元素存储在索引1的位置,依次类推。

集合的遍历

通过集合遍历,得到集合中每个元素,这是集合中最常见的操作。集合的遍历与数组的遍历很像,都是通过索引的方式,集合遍历方式如下:ArrayListDemo02.java

packagearraylist;

importjava.util.ArrayList;public classArrayListDemo02 {public static voidmain(String[] args) {//创建ArrayList集合

ArrayList list = new ArrayList();//添加元素到集合

list.add(13);

list.add(15);

list.add(22);

list.add(29);//遍历集合

for (int i = 0; i < list.size(); i++) {//[获取集合中元素的个数]//通过索引,获取到集合中每个元素

int n = list.get(i);//[获取集合中指定位置上的元素值];

System.out.println(n);

}

}

}//13//15//22//29

上述代码中,定义了一个可以存储int元素的集合;接着实现将int类型数值存储到集合中;接着实现遍历集合元素。这里要强调一点,get方法返回值的类型为集合中元素的类型。

集合中的常用方法补充

ArrayList集合提供的一些常用方法,如下:

boolean add(intindex, Object obj) //将指定元素obj插入到集合中指定的位置

Object remove(intindex)        //从集合中删除指定index处的元素,返回该元素voidclear()              //清空集合中所有元素

Object set(int index, Object obj) //用指定元素obj替代集合中指定位置上的元素

fff6c98081bf8904098fb5e1bd59ff4b.gif

ASCII编码表

ASCII编码表, 英文全称 American Standard Code for Information Interchange,美国标准信息交换代码。

ASCII编码表由来

计算机中,所有的数据在存储和运算时都要使用二进制数表示

a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号, 在计算机中存储时也要使用二进制数来表示, 具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码)。

大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

中文编码表

GB2312

UNICODE

字符中重要的ASCII码对应关系

a : 97

A : 65

0 : 48

char类型的存储

short:占两个字节,是有符号数据,取值范围-32768-32767,char: 占两个字节,是无符号数据,取值范围0-65536。char类型的数据参加运算时要先转换为int数据类型。

案例代码

packagearraylist;/*ASCII编码表演示

字符Java 数据类型,char

整数Java 数据类型,int

int 类型和 char 数据类型转换

char 两个字节, int 四个字节

char转成int类型的时候,类型自动提示,char数据类型,会查询编码表,得到整数

int转成char类型的时候,强制转换,会查询编码表

char存储汉字,查询Unicode编码表

char可以和int计算,提示为int类型, 内存中两个字节

char取值范围是0-65535, 无符号的数据类型*/

public classASCIIDemo {public static voidmain(String[] args){char c = 'a';int i = c + 1;

System.out.println(i);int j = 90;char h = (char)j;

System.out.println(h);

System.out.println( (char)6);char k = '你';

System.out.println(k);//char m = -1;

}

}//98//Z你

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

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

相关文章

matlab 数值解 期权顶级啊,潮盈期权院高胜率交易技巧系列之二----期权交易策略及基于MATLAB统计套利介绍...

主题&#xff1a;高胜率交易技巧系列之二----期权交易策略及基于MATLAB统计套利介绍会场流程&#xff1a;13:30--14:00&#xff1a;参会嘉宾到场签名14:00--14:45&#xff1a;期权知识14:45--15:25&#xff1a;期权交易策略使用15:25--15:35&#xff1a;茶歇15:35--16:35&#…

php的用例图箭头怎么画,需求中如何画用例图 - china008的个人空间 - OSCHINA - 中文开源技术交流社区...

UML用例图用例图主要用来图示化系统的主事件流程&#xff0c;它主要用来描述客户的需求&#xff0c;即用户希望系统具备的完成一定功能的动作&#xff0c;通俗地理解用例就是软件的功能模块&#xff0c;所以是 设计系统分析阶段的起点&#xff0c;设计人员根据客户的需求来创建…

oracle学习数据,Oracle从入门到精通的学习笔记

本次知识点:1.认识SQL的介绍2.掌握scott用户的数据结构3.查询语句之简单查询1.SQL:SQL是指结构化查询语言,在80年代的时候,基本存在80多种数据库,每一种数据库都有自己的的操作命令,也就导致了程序员从一个数据库到另一个数据库的转化时变的极为麻烦,基本就要从新学习.在70年代…

强行更改linux服务器时间,加强Linux服务器安全的20项建议

一般情况下用 Linux 做桌面在默认配置下是很安全的&#xff0c;我在一定程度上同意这个说法(很值得商榷的话题)。不过 Linux 内置的安全模型和工具做得确实很到位&#xff0c;用户只需进行简单的调整和自定义就可以加强 Linux 服务器安全。与恶意用户做斗争对于所有 Linux 系统…

linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因

前言先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面的那串提示符.例如:当然, 这个样式是可以修改的, 这就涉及到我们的PS1和PS2了, 有经验或者以前有设置过的童鞋估计…

skyeye linux qt,ARM仿真器SkyEye的安装及使用

SkyEye是一个开源软件(OpenSource Software)项目&#xff0c;中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境&#xff0c;模拟常见的嵌入式系统&#xff0c;可在SkyEye上运行μCLinux以及μC/OS-II等&#xff0c;以及各种…

2g 双核电脑 linux,9208)(奔腾双核E5200/2G/320G)电脑详细技术

处理器型&#xff1a;intel 酷睿2双核 p7350 intel 酷睿2双核 p7450 intel 酷睿2双核 t6600 intel 奔腾双核t4300 intel 奔腾双核 t4400 intel 赛扬双核 t1600 intel 赛扬双核 t3000操作系统&#xff1a;windowsvista home basic dos标配内存&#xff1a;1gb 2gb 硬盘容量&…

linux apache 大文件,Apache下error.log文件太大的处理方法

Apache下error.log文件太大的处理方法2019年05月03日| 萬仟网网络运营| 我要评论清除error.log、access.log并限制apache日志文件大小的方法 有个客户反映vps网站打不开&#xff0c;登录系统检查下&#xff0c;客户是win2003系统&#xff0c;发现放置网站文件的清除error.log、…

c语言程序设计实践课选题,c语言程序设计实践实验题目

c语言程序设计实践实验题目 绥化学院程序设计实践实验报告范例 参考1实验题目&#xff1a;循环结构程序设计实验目的&#xff1a;1.熟悉 VC6.0 的运行环境&#xff0c;掌握 C 程序的执行方法&#xff1b;2.掌握三种基本数据类型、部分运算符号和常用函数&#xff1b;3.掌握三种…

c语言上机指导答案清华,第一章自测练习答案清华大学c语言习题实验指导及课程设计...

第一章自测练习答案清华大学c语言习题实验指导及课程设计 第一章 自测练习参考答案 一&#xff0e;简答题 1&#xff0e;源程序是程序员创建的&#xff0c;目标程序是编译器创建的&#xff0c;可执行程序是连接器创建的。 2&#xff0e;步骤如下&#xff1a;1)说明程序需求&…

k6前级效果器怎么用_新手学习电吉他,效果器应选择单块还是综合?

作为一个新手来说&#xff0c;我建议一开始先选择综合型效果器。这里我们先简单介绍下综合效果器与单块效果器。综合效果器可以理解为多个单块的综合体&#xff0c;即包含了很多种效果。一块大综合效果器可能就有三四十种预置音色&#xff0c;有过载、失真、法滋、延迟、混响、…

android百度多渠道打包,Android多渠道打包方案的实践与优化

目前使用过的多渠道打包方式有两种 &#xff0c;一种是通过gradle打包&#xff0c;还有一种是美团的多渠道打包方案具体详情见这里1、Gradle打包1.1、在Androidmanifest.xml中添加android:name"UMENG_CHANNEL"android:value"${UMENG_CHANNEL_VALUE}" />…

一张图 综合交通 解决方案_航天智慧环保 | 重庆跳蹬河智慧水务管理系统解决方案—应用篇...

导读随着社会信息化趋势的不断增强&#xff0c;信息社会作为人类社会环境的一个重要方面&#xff0c;在社会中的地位和作用日益显著。在环境监测领域&#xff0c;对有效信息的把握以及正确的使用与水污染的防治和水环境的管理密切相关。航天智慧公司发挥航天系统工程优势&#…

oc 画一个圆弧_用SolidWorks画的塑料衣架,要用到不少让人头疼的曲线

此图是用SolidWorks2015建模&#xff0c;用KeyShot 8渲染。SW文件在2019年12月3日文件夹。零件一&#xff1a;1.在前视基准面上画样条曲线。2.在右视基准面上画样条曲线。(曲面放样的轮廓)3.新建基准面&#xff0c;参考样条曲线和紫色端点。4.在新基准面上画样条曲线。5.新建基…

红米android4.4.2,新版红米Note配置升级详解:系统其实是基于Android 4.4.2

新版红米Note今天中午&#xff0c;小米正式发布了4G版红米Note&#xff0c;由于该机早就出现在了工信部&#xff0c;因此较早一些的传闻显示该机在7月22日的发布会上就会和我们见面&#xff0c;但最终还是让我们多等了小半个月。和原版有所不同的是&#xff0c;4G版红米Note只有…

批量引号_RcoketMQ 批量发送和消息过滤

一、批量发送消息1、批量发送消息要求参考官方文档&#xff1a;http://rocketmq.apache.org/docs/batch-example/① 不能是延迟消息② 有相同的 Topic 和 waitStoreMsgOK(默认是 true&#xff0c;消息发送时&#xff0c;是否等待消息存储完成后再返回)③ 消息总大小不超过 1MB2…

msflexgrid允许大选择_特大型矿井提升机结构和布置方式的选择

导语&#xff1a;结合葫芦素矿井主井提升系统的设计&#xff0c;介绍了内装式提升机和直联悬挂式提升机的结构特点&#xff0c;比较了塔式提升机和落地式提升机的布置方式&#xff0c;对大型立井提升系统提升机结构和布置方式提出了自己的观点&#xff0c;条件允许时内装式提升…

jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析

首先看看继电器的驱动这是典型的继电器驱动电路图,这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图为什么要明白这个图的原理?单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大功率场合,比如控制电动机,显…

java byte[] 文件流 转换成string是乱码_Java学习--IO(二)、多线程

1.标准输入流标准输入流是指从标准输入设备流向程序的数据。Java利用http://System.in来得到一个InputStream字节输入流public static void main(String[] args) throws IOException {// 需求:输入一句话&#xff0c;然原样输出InputStream in System.in;byte[] buf new byte…

HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法...

coder.png在这一年的工作中&#xff0c;我发现很多问题你利用自己的「聪明才智」绕过去了&#xff0c;总有一天它会和你不期而遇&#xff0c;今天我们就来直面一个字体兼容性的小问题&#xff1a;Chrome谷歌浏览器下不支持css字体小于12px。我们先来看个效果图(chrome下)&#…