1:数组(掌握)
(1)数组是存储同一种类型的多个元素的容器。
(2)特点:数组中的每一个元素都有编号,从0开始,方便我们获取数据。
专业叫索引。
(3)一维数组的格式:
A:int[] arr = new int[3];
B:int[] arr = new int[]{1,2,3};
C:int[] arr = {1,2,3};
(4)二维数组的格式:
A:int[][] arr = new int[2][3];
B:int[][] arr = new int[2][];
C:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
(5)Java的内存分配(理解)
栈:存储的是局部变量。
必须先赋值,才能使用。
用完就消失。
堆:存储的是new出来的东西。
有默认值。
整数:0
浮点:0.0
字符:'\u0000'
布尔:false
引用类型:null
在jvm空闲的时候,或者内存不够的时候,才启动垃圾回收机制回收垃圾。
方法区:
本地方法区:
寄存器:
对我今天画的内存图要能看懂。
(5)操作:
(6)案例:
(1)数组是存储同一种类型的多个元素的容器。
(2)特点:数组中的每一个元素都有编号,从0开始,方便我们获取数据。
专业叫索引。
(3)一维数组的格式:
A:int[] arr = new int[3];
B:int[] arr = new int[]{1,2,3};
C:int[] arr = {1,2,3};
(4)二维数组的格式:
A:int[][] arr = new int[2][3];
B:int[][] arr = new int[2][];
C:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
(5)Java的内存分配(理解)
栈:存储的是局部变量。
必须先赋值,才能使用。
用完就消失。
堆:存储的是new出来的东西。
有默认值。
整数:0
浮点:0.0
字符:'\u0000'
布尔:false
引用类型:null
在jvm空闲的时候,或者内存不够的时候,才启动垃圾回收机制回收垃圾。
方法区:
本地方法区:
寄存器:
对我今天画的内存图要能看懂。
(5)操作:
//数组遍历
public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
//获取最值
public static int getMax(int[] arr){
int max=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
}
return max;
}
//获取数组中指定元素第一次出现的索引
public static int getIndex(int[] arr,int value){
int index=-1;
for(int i=0;i<arr.length;i++){
if(arr[i]==value){
index=i;
break;
}
}
return index;
}
(6)案例:
java中的参数传递问题。
/*
请写出下列程序的结果,并总结基本类型和引用类型的不同。
基本数据类型:形式参数的改变不影响实际参数
引用数据类型:形式参数的改变直接影响实际参数
*/
class ThinkTest
{
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 i=0;i<arr.length;i++){
if(arr[i]%2==0){
arr[i]*=2;
}
}
}
}
数据加密问题。
/*
某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,
在传递过程中需要加密,加密规则如下:
首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
然后,把加密后的结果在控制台打印出来。
举例:比如说我有一个数据123456。
把数据倒序:654321
加5对10取余:109876
交换位置:609871
怎么把数据存储到数组中?
int[] arr = {1,2,3,4,5,6};
验证我们的代码有没有问题:
12345
54321
09876
69870
*/
class JiaMiDemo {
public static void main(String[] args) {
//定义一个整数
//int number = 123456;
int number = 12345;
//定义一个数组
int[] arr = new int[7];
//定义一个索引
int index = 0;
//我们有没有办法能够获取到一个数据的每一个位上的数据
/*
arr[0] = number%10;
arr[1] = number/10%10;
arr[2] = number/100%10;
arr[3] = number/1000%10;
arr[4] = number/10000%10;
arr[5] = number/100000%10;
*/
//这个循环实现了把数据存储到数组中,并且还倒序了。
while(number > 0) {
arr[index] = number%10; //arr[0]=6,arr[1]=5,arr[2]=4,arr[3]=3,arr[4]=2,arr[5]=1
index++; //index=1,2,3,4,5,6
number/=10; //number=12345,1234,123,12,1,0
}
//把每一个数据加5然后对10取余。
for(int x=0; x<index; x++) {
arr[x]+=5;
arr[x]%=10;
}
//交换数据
int temp = arr[0];
arr[0] = arr[index-1];
arr[index-1] = temp;
//遍历数组
for(int x=0; x<index; x++) {
System.out.print(arr[x]);
}
System.out.println();
}
}