1.数组(一维数组)
2.数组的定义格式
3.数组的初始化
4.Java中的内存分配的区域
5.创建一个数组
6.数组的基本引用
遍历数组
数组的最值问题
数组的元素查找
数组的排序
需求:输入一个整数,输出它是几位数? //s=n/10;
特例:
录入0~9----就是一位 当条件不成立的时候,至少得执行一次,故而使用do while 循环
需求:输入一个大于1的整数,判断是否为质数(合数:能被除过1和他本身之外的其他自然数整除的自然数)
注意:
1)如果输入的数据太大,为了提高程序得执行效率,使用Math.sqrt()开方再循环确定
for(int i=;i<=Math.sqrt(num);i++){
if(num%i==0){
System.out.println("不是质数");
}
}
2)对于输入数据的需求,必须考虑边界数据
3)如果在某种条件下想直接结束方法就可以使用return来完成这个功能
alt+enter:在idea中 ------鼠标放到;后面,按键则在前面自动补全
Math.abs() //求绝对值方法
Math.sqrt() //开平方根方法
数组
需求:
公司有80个员工,给80个员工发工资,使用Java程序进行去操作(需要80个变量,不易操作,数组就出现了)
JavaSE中容器:
数组
StringBuffer:字符串缓冲区
集合
数组(其实质也是一个变量)
格式:
数据类型[] 变量名称;(推荐使用)
数据类型 变量名称[];
初始化:
第一种:动态初始化
第二种:静态初始化
动态初始化:给定数组的长度,元素由系统默认初始化
格式:
数据类型[] 数组名称=new 数据类型[长度];(推荐)
数据类型 数组名称[]=new 数据类型[长度];
例子: int[] arr=new int[3]
[I@1540e19d:
[:数组 I:int类型 @地址符号标记
静态初始化:
格式
数据类型[] 数组名称=new 数据类型[] { 元素1,元素2,元素3}
数据类型 数组名称 []=new 数据类型[]{元素1,元素2,元素3}
简写格式:
数据类型[]数组名={元素1,元素2,元素3}
数组的应用之遍历
printArry(数组名);
for(int i=1;i<=arr.length;i++){ //length是Java中数组内置的属性,获取数组的长度
System.out.println(arr[i]);
}
数组的最大下标值(索引值):arr.length-1
如何确定数组的元素:
数组名称 [索引值](索引值从0开始)
注意:一旦数组创建,内存地址确定,不再发生改变,除非重新new数组
Java中的内存分配
1)栈内存 :存储一些局部变量(在方法中定义或者方法声明上的变量)
2)堆内存 :new 出来的东西都存储在里面
3)方法区:class区域(字节码文件)
static区域
字符串常量区域
4)本地方法区:和系统相关
5)寄存器:和cpu有关
栈内存:(先进后出)(压子弹)
进栈的方式:压栈
出栈的方式:弹栈
队列:(先进先出)
不同的栈内存指向同一个堆内存(将某个对象的地址赋值给另一个数组)
数组是引用数据类型,不是基本数据类型
引用类型变量是通过垃圾回收器(GC)空闲的时候去回收的,不需要程序员手动关闭资源,(在Java中,需要手动操作的都是底层非Java语言实现的)
数组中常见的两个异常:
引用类型----出现空指针异常
数组为空(null)----再进行访问其中的元素就会出现空指针异常---属于运行时出现的错误
解决方案:对对象进行判断,如果不为空,再进行访问
数组----角标越界异常
访问的角标超出了数组的长度----属于运行时出现的错误
程序调试(debugm模式运行)
先打断点 (断点位置:有效代码的第一行)
数组的基本元素查找法:
查询一个数组中的某个元素第一次在数组中出现的索引值(不考虑重复)
//Java中:查询数组元素,找不到的话返回负数
数组遍历
遍历方法代码:
public static void arrT(int []arr){
System.out.print("[");
for(int i=0;i<=arr.length;i++){
if(i==arr.length){
System.out.print("]");
} else{
System.out.print(arr[i]+",");
}
}
}
数组元素冒泡排序
排序方法代码:
public static void sort(int []arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){ //双层循环嵌套使用,每次循环一遍将最大值排到最后面,
if(arr[j]>arr[j+1]){ //最后面,每次循环结束,下回比较的数就少一个
int temp =arr[j]; //利用中间变量的方法进行数据的交换,即完成向
arr[j]=arr[j+1]; //右排序的动作,双层循环执行完就将数据整个完成了排序
arr[j+1]=temp;
}
}
}
}
数组元素之逆序
逆序方法代码:
public static void reverse(int[]arr){
for(int j=0;j<=arr.length/2;j++){
int temp =arr[j];
arr[j]=arr[arr.length-1-j];
arr[arr.length-1-j]=temp;
}
}
数组元素索引
代码如下 public static int index(int[]arr,int key){
int index=-1;
for(int i=0;i<arr.length;i++){
if(key==arr[i]){
index=i;
break;
}
}
return index;
}