三、数组 & 常用类

数组Array基本概念:

一维数组、二维数组、多维数组

数组是相同数据类型(可以为任意类型数据)的有序集合,通过索引来引用

数组也是对象;数组元素相当于对象的成员变量

数组长度是确定的,不可变的;如果越界,则报ArrayIndexOutOfBonnd

数组有三个特点:

1.其长度是确定的,数组一旦被创建,它的大小是不可改变的

2.其元素必须是相同类型,不允许出现混合类型

3.数组中的元素可以是任何数据类型,包含基本类型和引用类型

eg:int[] a = new int[3]; 3是数组长度;a[0] 、a[1] 、 a[2]

 1 Car.java
 2 public class Car {
 3     String name;
 4
 5     public Car(String name){
 6         this.name=  name;
 7     }
 8 }
 9
10 Test01.java
11 public class Test01 {
12     public static void main(String[] args) {
13         /**
14          * 1. 数组是相同数据类型(数据类型可以为任意类型)的有序集合
15          * 2. 数组也是对象。数组元素相当于对象的成员变量(详情请见内存图)
16          * 3. 数组长度的确定的,不可变的。如果越界,则报:ArrayIndexOutofBoundsException
17          */
18         int[] a = new int[3];
19         a[0] = 23;
20         a[1] = 28;
21         a[2] = 32;
22
23         Car[] cars = new Car[4];
24         cars[0] = new Car("奔驰");
25         System.out.println(a.length);
26         for(int i=0;i<a.length;i++){
27             System.out.println(a[i]);
28         }
29
30     }
31 }

数组声明和初始化:

一维数组的声明方式有两种:

type[] 变量名;

type 变量名[];

eg: int[] a; int b[];

通过new来创建数组: int[] a = new int[3];

初始化:对数组元素初始化,数组元素相当于对象的成员变量,按照成员变量的规则初始化

1.默认初始化: 默认值跟成员变量的规则一样:数字,整数:0,浮点数0.0,char \u0000,布尔型 0false

2.动态初始化: a[0]=1;for循环赋值 或 用容器来放,大部分容器底层实现是数组

for ( int i = 0;i<a.length;i++) {

  a[i] = i*12;

}

3.静态初始化:  int c[] = {23,34,56,78};  //长度4,索引范围0-3

 1 public class Test02 {
 2     public static void main(String[] args) {
 3         //声明
 4         int[] a;
 5         int b[];
 6         //创建数组对象
 7         a = new int[4];
 8         b = new int[5];
 9
10         //初始化(对数组元素的初始化)
11         //默认初始化:数组元素相当于对象的成员变量,默认值跟成员变量的规则一样。数字0,布尔false,char\u0000,引用:null
12         //动态初始化:
13         for(int i=0;i<a.length;i++){
14             a[i] = i*12;
15         }
16
17         //静态初始化
18         int c[] = {23,43,56,78};   //长度:4,索引范围:[0,3]
19         Car[] cars = {
20                         new Car("奔驰"),
21                         new Car("比亚迪"),
22                         new Car("宝马")
23                     };
24         Car c2 = new Car("奔驰");
25         System.out.println(c2==cars[0]);
26     }
27 }

操作对象就是操作引用,引用是地址;数组属于引用类型

二维数组:

int[][] a = {{1,2},{3,4,0,9},{5,6,7}};

二维数组理解参考表格

 1 public class Test01 {
 2     public static void main(String[] args) {
 3 //        int [][] a = {
 4 //                        {1,2},
 5 //                        {3,4,0,9},
 6 //                        {5,6,7}
 7 //                    };
 8
 9         int[][]  a = new int[3][];
10         a[0] = new int[2];
11         a[1] = new int[4];
12         a[2] = new int[3];
13
14         a[0][0] = 1;
15         a[0][1] = 2;
16
17         a[1][0] = 3;
18         a[1][1] = 4;
19         a[1][2] = 0;
20         a[1][3] = 9;
21
22         a[2][0] = 5;
23         a[2][1] = 6;
24         a[2][2] = 7;
25
26         System.out.println(a[2][2]);
27     }
28 }

 1 public class Matrix {
 2
 3     /**
 4      * 打印指定的矩阵
 5      * @param c
 6      */
 7     public static void print(int[][] c){
 8         //打印矩阵
 9         for(int i=0;i<c.length;i++){
10             for(int j=0;j<c.length;j++){
11                 System.out.print(c[i][j]+"\t");
12             }
13             System.out.println();
14         }
15     }
16
17     /**
18      * 矩阵加法
19      * @param a
20      * @param b
21      * @return
22      */
23     public static int[][]  add(int[][] a,int[][] b){
24         int[][] c = new int[a.length][a.length];
25         for(int i=0;i<c.length;i++){
26             for(int j=0;j<c.length;j++){
27                 c[i][j] = a[i][j]+b[i][j];
28             }
29         }
30         return c;
31     }
32
33     public static void main(String[] args) {
34         int[][]  a = {
35                         {1,3,3},
36                         {2,4,7},
37                         {6,4,9}
38                      };
39         int[][]  b = {
40                 {3,3,3},
41                 {2,4,7},
42                 {1,4,9}
43         };
44
45         int[][] c = add(a, b);
46
47         print(c);
48
49     }
50 }

===============================常用类===============================

String类: 不可变字符序列

StringBuilder类/StringBuffer类: 可变字符序列;同属于抽象类AbstractStringBuilder下的两个类

StringBuilder类,线程不安全,效率高;

StringBuffer类,线程安全,效率低;

根据StringBuilder字符数组,diy,定义数组类,模拟ArrayList

StringBuilder; char[] value;

MyArrayList  ;   Object[] elements;

天下文章一大抄,主要是想象力,创新(反复的类比,模仿,并创造)

转载于:https://www.cnblogs.com/xuliang179/p/5148174.html

java学习笔记第三章相关推荐

  1. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  2. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

  3. 机器人导论(第四版)学习笔记——第三章

    机器人导论(第四版)学习笔记--第三章 3 操作臂运动学 3.1 引言 3.2 连杆的描述 3.3 连杆连接的描述 3.4 连杆坐标系的定义 3.5 操作臂运动学 3.6 驱动空间.关节空间和笛卡尔空 ...

  4. Java学习笔记项目三:开发团队调度软件(尚硅谷)

    JAVA学习笔记开发团队调度软件 ①创建基础组件 Equipment 接口 package august.domain;/*** 设备领取** @author : Crazy_August* @Dat ...

  5. Java学习笔记(三):流程控制

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://mp.csdn.net/mdeditor/100662793 目录 ...

  6. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件

    第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...

  7. Java学习笔记(三十五)

    在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度.现在将跟着视频做的笔记进行整理.本篇博客是整理Java知识点的第三十五 ...

  8. JAVA学习笔记(三) 实现类

    这一节,我们要学会一些基本的实现类的操作,理解构造函数的作用和用法. 目录 一.实例变量和封装 1.变量 2.封装 二.指定类的公共接口 指定方法 指定构造函数&为公共接口注释 案例测试 三. ...

  9. Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog

    Win32学习笔记 作者: 姜学哲(netsail0@163.net) 教材: Windows程序设计(第五版)北京大学出版社  [美]Charles Petzold 著  北京博彦科技发展有限公司 ...

最新文章

  1. SAP MM Reset预留单上的Deletion Flag?
  2. 元学习论文OPTIMIZATION AS A MODEL FOR FEW-SHOT LEARNING的简单理解
  3. C语言中的匿名结构体
  4. mysql 导入dbm文件_DBM数据导入到mysql数据库方法
  5. vim配置c语言开发环境变量,gcc配置和vim编程
  6. [oracle]数据库字段类型char(n)的问题
  7. win10搭建无盘服务器配置,win10系统无盘安装教程
  8. 面试宝典-常见面试问题回答技巧
  9. UiBot进行谷歌浏览器长截屏办法
  10. 小米路由的IPv6支持教程(纯转保存)
  11. 输入角度,输出正弦、余弦函数值
  12. 银行考试计算机也需要考金融知识吗,银行招聘考试科技岗考试科目及考试内容...
  13. 最强大脑记忆曲线(4)——关于项目中的全局变量
  14. 颠覆想象,一盏夜灯的变革
  15. 用水流的概念来玩硬件(三)----LDO与DCDC电源电路
  16. 计算机ppt测试题填空题,2017职称计算机PowerPoint练习试题及答案(1)-中华考试网...
  17. 海量工业数据如何应用?能源企业率先做了这些尝试
  18. 0x01A686F0 处有未经处理的异常(在 五金上色软件.exe 中): 0xC000041D: 用户回调期间遇到未经处理的异常。。...
  19. win10下anaconda、tensorflow-cpu以及tensorflow-gpu安装
  20. PX4源码分析2:飞控系统控制流程简述

热门文章

  1. 艾伟_转载:深入研究 Repeater
  2. IT业爆发“新人”争夺战
  3. 信息化建设工程的有效成本及定价分析(1)
  4. 虚拟化技术KVM的搭建
  5. Radware:当前,CDN安全远远不足
  6. linux下vi命令大全[转]
  7. Spring MVC学习笔记——POJO和DispatcherServlet
  8. php 删除cookie有效方法
  9. asp.net编程:asp.net中如何设置页面的编码
  10. 最完美的ASCII 表