1.数组概述、定义格式

* A:数组概念
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
* B:数组定义格式
格式1:数据类型[] 数组名;----int[] arr;
格式2:数据类型 数组名[];----int arr[];
* C:数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致,

2.数组初始化、动态初始化

* A:什么是数组的初始化
  Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
* B:如何对数组进行初始化
* a:动态初始化 -- 只指定长度,由系统给出初始化值
* 格式:
数据类型[] 数组名 = new 数据类型[5];
* int[] arr = new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。
* b:静态初始化 -- 给出初始化值,由系统决定长度
* 格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
* 初始化时指定每个数组元素的初始值,由系统决定数组长度。
* int[] arr = {1,2,3,4,5,6,7,8,9,0};
* C:动态初始化的格式:
* 数据类型[] 数组名 = new 数据类型[数组长度];
* 数组长度其实就是数组中元素的个数。
* D:案例演示
* 对数组的解释
* 输出数组名称和数组元素
* E:数组的长度格式
* 数组名.length

3.java内存分配,栈、堆区别

* A:栈---存储局部变量,
* B:堆---储存new出来的东西,在堆内new出来的对象都有初始化值。
* C:方法区
* D:本地方法区
* E:寄存器 1:局部变量
a:方法定义中或者方法声明上(例如:形参)的所有变量
b:使用完毕,立即消失
2:new出来的东西---------实体,对象。
new int[3];
a:每一个实体都有首地址值
b:每一个实体内的数据都有默认值
byte,short,int,long --------0
float,double -----------------0.0
char ‘\u0000’----------------Unicode编码,0为十六进制的数
boolean false
引用类型:null
c:使用完毕后,会被垃圾回收器空闲的时候回收。

4.数组静态初始化

* A:静态初始化的格式:
* 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
* 简化格式:
* 数据类型[] 数组名 = {元素1,元素2,…};

5.数组操作的两个常见小问题越界和空指针

* a:ArrayIndexOutOfBoundsException:数组索引越界异常
* 原因:你访问了不存在的索引。
* b:NullPointerException:空指针异常
* 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。

6.数组演示操作

数组遍历:就是依次输出数组中的每一个元素。
int[] arr={1,2,3,4,5,6,7,8};
for(int x=0;x<arr.length;x++){
System.out.println(arr[x]);
}
数组获取最值(获取数组中的最大值最小值)
public static int getMax(int[] arr){
int[] arr={1,2,3,4,5,6,7,8};
int max=arr[0];
for(int x=1;x<arr.length;x++){
if(max<arr[x]){
max=arr[x];
}
}
System.out.println(max);
}
数组元素反转(倒序有俩种方法)(就是把元素对调)
1.public static void niXu(){
int[] arr={1,2,3,4,5,6,7,8};
for(int start=0,end=arr.length-1;start<end;start++,end--){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
2.public static void niXu2(){
int[] arr={1,2,3,4,5,6,7,8};
for(int x=0;x<arr.length/2;x++){
int temp=arr[x];
arr[x]=arr[arr.length-1-x];
arr[arr.length-1-x]=temp;
}
}
数组查表法(根据键盘录入索引,查找对应星期)
import java.util.Scanner;
class DemoChaBiao {
public static void main(String[] args) {
/*
需求:
数组查表法(根据键盘录入索引,查找对应星期)
分析:
从键盘输入一个数,
*/
//创建对象
Scanner sc = new Scanner(System.in);
//键盘录入一个数
int x=sc.nextInt();
//定义一个char类型的数组
char[] arr={' ','一','二','三','四','五','六','日'};
char c=getWeek(x,arr);
System.out.println(c);
System.out.println("Hello World!");
}
//定义返回星期几字符方法,返回值类型char,参数列表int x,char[] arr
public static char getWeek(int x,char[] arr){
char c = arr[x];
return c;
}
}
数组元素查找(查找指定元素第一次在数组中出现的索引)
import java.util.Scanner;
class DemoIsEquals {
public static void main(String[] args) {
/*
需求:
数组元素查找(查找指定元素第一次在数组中出现的索引)
分析:
1.元素的遍历,
2.比较数组元素与给出的值是否相等
3.输出
*/
int[] arr={1,2,3,4,5,6};
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int b=isEquals(x,arr);
System.out.println(b); System.out.println("Hello World!");
}
//定义方法,返回值类型boolean,参数列表 int x ,int[]arr
public static int isEquals(int x,int[] arr){
//for循环用来遍历和比较,看是否满足数组元素的值是否与输入的数据相等,相等返回索引,不相等返回-1
for (int i= 0 ;i<arr.length ;i++ ) {
if (x==arr[i]) {
return i;
}
}
return -1;
}
}

7.二维数组的概述及其格式

* A:二维数组概述
* B:二维数组格式1
* 数据类型[][] 数组名 = new 数据类型[m][n];
* int[][] arr= new int[m][n];
* C:二维数组格式1的解释
*这是一个二维数组,它里面有m个一维数组,每一个一维数组中都有n个元素,
* D:注意事项
* a:以下格式也可以表示二维数组
* 1:数据类型 数组名[][] = new 数据类型[m][n];
* 2:数据类型[] 数组名[] = new 数据类型[m][n];
* B:注意下面定义的区别
int x;
int y;
int x,y; int[] x;
int[] y[]; int[] x,y[];
* A:二维数组格式2
* 数据类型[][] 数组名 = new 数据类型[m][];
* int[][] arr = new int[3][];
* arr[0] = new int[2];
* arr[1] = new int[3]
* arr[2] = new int[1];
* A:二维数组格式3
* 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
* 简化版格式:
* 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};

8.二维数组演示

需求:二维数组遍历
int[][] arr={{1,2,3,4},{2,3,4,5}};
for(int x=0;x<arr.length;x++){
for(int y=0;y<arr.length;y++){
System.out.println(arr[x][y]);
}
}
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
class Demo2Array2 {
public static void main(String[] args) {
int[][] arr={{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
int sum=0;
for (int x=0;x<arr.length ;x++ ) {
for (int y=0;y<arr[x].length ;y++ ) {
sum+=arr[x][y];
}
}
System.out.println(sum); System.out.println("Hello World!");
}
看程序写结果,并画内存图解释
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);
change(a,b);
System.out.println("a:"+a+",b:"+b); int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);
} public static void change(int a,int b) {
System.out.println("a:"+a+",b:"+b);
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b);
} public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
总结:Java中到底是传值还是传址?
1,Java中即传值也传址,基本数据类型传的是值,引用数据类型传的是址(地址)
2,Java中是传值,非传址,因为地址值也是值(高司令支持)

数组、栈、堆(java基础知识五)的更多相关文章

  1. java 基础知识五 数组

    java  基础知识五  数组 数组保存的是一组有顺序的.具有相同类型的数据. 同一个数组中所有数据元素的数据类型都是相同的. 可以通过数组下标来访问数组,数据元素根据下标的顺序,在内存中按顺序存放 ...

  2. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  3. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  4. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  5. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  6. Java 基础知识总结1

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  7. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  8. 黑马毕向东Java基础知识总结

    Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...

  9. java基础知识一览(二)

    一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...

随机推荐

  1. 中国余数定理 1(codevs 3040)

    题目描述 Description 摘自算法导论...... 找出第k个被3,5,7除的时候,余数为2,3,2的数: 输入描述 Input Description 一个数k. 输出描述 Output D ...

  2. vs2005做的留言本——天轰川下载

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 这个虽然单纯是个留言本,但是在功能上我都使用了尽量不重复的解决方法,所以我自认为非常适合入门级的朋友看,而且用了我 ...

  3. Oracle 实现 一个关键字 匹配多个 字段

    有这么一个需求,满足只有一个输入框的条件下,支持不同数据列的搜索结果. 说白了,就是这个 输入框  既可以用来 搜索姓名,也可以搜索 年龄,地址等. 分析: 一般情况下,我们的一个输入框对应 数据库 ...

  4. 洛谷——P1560 [USACO5.2]蜗牛的旅行Snail Trails

    P1560 [USACO5.2]蜗牛的旅行Snail Trails 题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总 ...

  5. Wannafly练习赛14

    B(倍增) 题意:  分析: 先可以用two point预处理出以每个位置为起点的连续段<=k的下一个终点 然后对于每个询问,倍增跳就行了 时间复杂度O(nlogn) C(扫描线处理区间询问) ...

  6. spark学习(二)

    Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发. Spark和Hadoop有什么不同呢? Spark是基于map reduce算法实现的分布式计算,拥有Hadoop Ma ...

  7. Mysql 性能优化20个原则(3)

    12. Prepared Statements Prepared Statements很像存储过程,是一种运行在后台的SQL语句集合,我们可以从使用 prepared statements 获得很多好 ...

  8. QML 开发神奇加成之为网络资源设置本地缓存

    QML 开发神奇加成之为网络资源设置本地缓存 直接上码: #include <QNetworkAccessManager> #include <QNetworkDiskCache&g ...

  9. Raspberry Pi学习笔记

    一.树莓派 Raspberry Pi 更换国内源 编辑 /etc/apt/sources.list 文件,用 nano 命令编辑 pi@raspberrypi:~$ sudo cp /etc/apt/ ...

  10. wiki平台工具

    1.  confluence  评点: 好用,与world类似.模板多.