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基音检测分析.doc

基于MATLAB基音检测分析基于MATLAB基音检测分析摘要&#xff1a;基音检测作为语音信号处理的重要手段&#xff0c;被广泛地应用于语音的合成、编码及识别等一系列语音信号处理技术问题。基音检测的准确性对于要求极高的语音识别、合成、分析、压缩编码等等都有重要的意义。该文…

php多线程 static变量,private static和public static的比较:多线程间

private static和public static的比较&#xff0c;区别在于修改的范围不同&#xff0c;但作用域都是全局的即整个进程内共享&#xff0c;与具体线程无关。以下是测试代码&#xff1a;声明静态内部变量的抽象类package atest.privateStatic;public abstract class TypeObject {p…

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&#…

nginx怎么升级php的版本号,nginx 升级指南,最详细的nginx升级步骤

查看nginx当前版本通过nginx -V 命令就可以查看当前的版本&#xff0c;已经当前版本安装时候的一些nginx命令[rootlocalhost sbin]# ./nginx -Vnginx version: nginx/1.2.9built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)configure arguments: --prefix/nginx_instal1.下…

oracle sum函数返回类型,Oracle / PLSQL SUM函数

这个Oracle教程解释了如何使用Oracle / PLSQL SUM函数。SUM(x) 添加x中的所有值&#xff0c;并返回总和。SUM函数对一组行进行操作&#xff0c;并返回一行输出。 Null值被SUM函数忽略。您可以使用DISTINCT关键字排除重复条目。语法Oracle / PLSQL SUM函数的语法是&#xff1a;S…

pdo oracle返回参数游标,PDOStatement::closeCursor

PDOStatement::closeCursorPDOStatement::closeCursor — 关闭游标&#xff0c;使语句能再次被执行。(PHP 5 > 5.1.0, PECL pdo > 0.9.0)说明语法bool PDOStatement::closeCursor ( void )PDOStatement::closeCursor() 释放到数据库服务的连接&#xff0c;以便发出其他 S…

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

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

php stmp 授权码问题,PHPmailer 使用网易126发送邮件的问题

最近使用PHPMailer库连接网易的smtp.126.com邮件服务发送邮件总是返回连接失败Mailer Error: SMTP connect() failed.换过swiftmailer库也是一样的结果。这是使用新的网易帐号才会有的问题&#xff0c;因为新的网易帐号需要开启客户端授权码才能使用SMTP服务。旧帐号是没有这个…

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

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

linux创建新进程就分配空间,linux几种创建进程的方法

在Linux中主要提供了fork、vfork、clone三个进程创建方法。在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时&#xff0c;通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。forkfork创建…

java文件下载至linux乱码,JAVA 文件下载乱码问题解决办法

页面设置隐藏的iframe页面下载按钮id"btnDown" href"javascript:void(download(btnDown))" >下载模板页面JS脚本function download(id){$("#reqFrame").attr("src",encodeURI("/servlet/Common?actiondownloadByPath&fil…

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

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

webshell提权教程linux,Linux下WEBSHELL提权

用phpshell2.0和Linux Kernel2.6x 本地溢出代码配合提ROOT,现在不少LINUX主机都还有这个本地溢出漏洞。前提&#xff1a;1、目标机上安装了GCC能编译源码2、Kernel 2.6.x (> 2.6.13 && < 2.6.17.4)因为是在webshell里溢出成功也得不到返回的ROOT SHELL,所…

Linux宏定义实现类成员函数,全面解析Linux内核的同步与互斥机制

http://blog.csdn.net/sailor_8318/archive/2008/06/30/2599357.aspx【摘要】本文分析了内核的同步及互斥的几种机制&#xff1a;原子运算符(atomicoperator)、自旋锁Spinlock、等待队列Waitqueue、事件Event、completion、信号量Semaphore及其优化版互斥锁&#xff0c;详细分析…

Linux命令sngre,linux gre隧道创建

linux gre隧道创建实验环境两台可以相互通信的虚拟机&#xff0c;两个虚拟机在不通的网段。如下所示host A:[[email protected] ~]# ip a1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127…

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;以及各种…

Linux 读写 优化 ssd,linux ssd 优化

一、修改默认的固态硬盘(SSD)柱面大小提升Linux下固态硬盘的使用率&#xff0c;在安装Linux操作系统前就应该做相关工作。系统会先在磁盘上创建分区&#xff0c;通常创建的分区包含固定数量的柱面&#xff0c;而默认情况下&#xff0c;每个柱面由16065512个字节的扇区组成。现在…

linux中dev目录的作用,Linux 的dev目录详解和Linux系统各个目录的作用

Linux /dev目录详解在linux下&#xff0c;/dev目录是很重要的&#xff0c;各种设备都在下面。下面简单总结一下&#xff1a; dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部…

linux 类型排序,Linux命令之排序命令sort使用实例

名称&#xff1a;sort位置&#xff1a;/usr/bin/sort权限&#xff1a;所有用户用法&#xff1a; sort [OPTION]... [FILE]...sort [OPTION]... --files0-fromF选项&#xff1a;-b --ignore-leading-blanks 忽略最前面的空格-f --ignore-case fold lower case to…