Java数组笔记
# 数组--------内存 #
2017/8/31 15:29:19
## 数组(容器) ##
- 为了存储同种数据类型的多个值
- 概念
- 数组是可以存储同一种数据类型多个元素的集合,也可以看成是一个容器
- 数组既可以存储基本数据类型,也可以存储引用数据类型
- 格式
- 数据类型[] 数组名 = new 数据类型[数组的长度];
- int[] arr = new int[5];
- 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
- int[] arr = new int[]{11,22,33,44,55};---------数组长度为5
- 数组初始化
- 为数组开辟连续的内存空间,并为每个数组元素赋予值
- 动态初始化:只指定长度,由系统决定初始化值
- int[] arr = new int[5];
-
1. 整数类型:byte,short,int,long,默认初始化值都是0
2. 浮点类型:float,double,默认初始化值为0.0
3. 布尔类型:Boolean默认初始化值为false
4. 字符类型:char初始化值为‘\u0000’ -------char在内存中占两个字节,是16个二进制位, \u0000----每一个0代表十六进制的0,四个0就是十六个二进制位
- 静态初始化:给出初始化值,由系统决定长度
- 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
- ` int[] arr = new int[]{11,22,33,44,55};` 先声明,后赋值
- `int[] arr = {11, 22,33,44,55}; ` 声明和赋值在一行
` int[] arr;
arr = new int[]{11,22,33,44,55};
int[] arr2;
arr2 = {11,22,33,44,55} //会报错,,,声明和赋值必须在一行
`
## 栈 ##
- 存储局部变量---
- 局部变量:定义在方法声明上和方法中的变量
- int x = 10;
## 堆 ##
- 存储new出来的数组或对象(新创建)
## 方法区 ##
-面向对象-
## 本地方法区 ##
-和系统相关
## 寄存器 ##
- 给CPU使用(.class)
## 一个数组的内存图解 ##

# 二维数组 #
` int[][] arr = new int[3][2]; //定义二维数组
System.out.println(arr); //二维数组 [[I@15db9742
System.out.println(arr[0]); //二维数组中第一个一维数组 [I@6d06d69c
System.out.println(arr[0][0]); //二维数组中第一个一维数组的第一个元素 0
/*
//int[][] arr = new int[3][2];
//以下两种也是表示数组的格式
int arr[][] = new int[][];
int[] arr[] = new int[][];
int x;
int y;
int x,y;
int[] x;
int[] y[];
int[] x,y[]; //x是一维数组,y是二维数组
*/`
**int[][] arr = new int[3][];**
----------二维数组中有三个一维数组
赋值::
`arr[0] = new int[3];
arr[1] = new int[5];
`
##二维数组遍历##
外循环控制二维数组的长度,其实就是一维数组的个数;
内循环控制一维数组的长度。
`class Demo2_Array {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5,6},{4,3}};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
bianli(arr);
}
public static void bianli(int[][] arr){
for (int i = 0; i < arr.length ;i++ ){ //i代表每一个二维数组中的一维数组
for (int j = 0;j < arr[i].length ;j++ ){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}`
# java中的参数传递 #
1. 基本数据类型的值传递,不改变原值,因为调用后就会弹出栈,局部变量随之消失。
2. 引用数据类型的值传递,改变原值,因为即使方法弹出栈,但是堆内存数组的对象还在,可以通过地址继续访问。
*两种说法:
1、Java中既是传值,也是传址,基本数据类型传递的值,引用数据类型传递的地址
2、Java中只有传值,因为地址值也是值*
Java数组笔记的更多相关文章
- Java开发笔记(二十三)数组工具Arrays
数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...
- Java学习笔记之---方法和数组
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...
- java学习笔记六——数组
数组类型 数组是一种常见的数据结构,可用于存放多个数据,每一个数组元素存放一个数据,通常可以通过下标进行访问其元素. Java数组要求所有数组元素具有相同的数据类型.因此,数组元素的数据类型是唯一的. ...
- [java小笔记] 关于数组内存管理的理解
数组是大多数编程语言都提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组,java语言的数组变量时引用类型的变量,因此具有java引用变量的特性.在使用数组之前必须对数组对象 ...
- java学习笔记(基础篇)—java数组
一:什么是数组,什么时候使用数组? 数组是用来保存一组数据类型相同的元素的有序集合,数组中的每个数据称为元素.有序集合可以按照顺序或者下标取数组中的元素. 在Java中,数组也是Java对象.数组中的 ...
- Java学习笔记(5)--- Number类和Math 类,String类的应用,Java数组入门
1.Number 和 Math 类: 在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型(int,double,float这些)的情形. 这种由编译器特别支持的包装称为装箱,所以当内置数 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
随机推荐
- hihocoder_1014: Trie树(Trie树模板题)
题目链接 #include<bits/stdc++.h> using namespace std; ; struct T { int num; T* next[]; T() { num=; ...
- [C++]智能指针的实现与使用
智能指针 智能指针是当我们在使用对象时,有时会把对象的内存分配在堆上忘记释放,导致内存泄露,并且当多个指针共享同一个对象的内存时,容易出现重复释放内存,导致错误. 我们针对所需要共享的对象,手动完成一 ...
- Work 1(导游类)(2017.06.27)
- [luogu P3787][新创无际夏日公开赛] 冰精冻西瓜 [树状数组][dfs序]
题目背景 盛夏,冰之妖精琪露诺发现了一大片西瓜地,终于可以吃到美味的冻西瓜啦. 题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有 ...
- linux函数的阻塞与非阻塞IO及错误处理
1.阻塞是指进程等待某一个事件的发生而处于等待状态不往下执行,如果等待的事件发生了则会继续执行该进程.调用系统阻塞函数可能会导致进程阻塞进入睡眠状态. 2.阻塞IO之read读取键盘输入数据 3.li ...
- VSCode自定义配色方案
说明 本文更新于2017-07-24,使用VSCode 1.14.1,操作系统为Windows. 配置文件 "文件-首选项-颜色主题"即可显示所有可用的颜色主题,上下选择后Ente ...
- 关于PHP魔术方法__call的一点小发现
好久没有上博客园写文章了,今晚终于有点空了,就来写一下昨天的一点小发现. 我自己所知,C++,Java的面向对象都有多态的特点,而PHP没有,但PHP可以通过继承链方法的重写来实现多态的属性.而魔术方 ...
- 【原创】-- C# 点滴积累 -- String
一.string.Format() 将[数字字符串]转为两位小数显示的字符串: dt = dtResult.Select(it => new CommodityPriceLimitEntity ...
- 移动玩具[HAOI2008]
题目描述 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩 ...
- 成为Java顶尖程序员 ,看这11本书就够了(转)
学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一本好书的 ...