JavaSE基础(三)(JavaSE大全)
上一章节:JavaSE循环(JavaSE大全)
JVM :java虚拟机
分为4大块
(1)栈区(stacksegment)存放函数的参数值,局部变量的值等,在超过这个变量的作用域是会被系统自动释放掉存于JVM内存中的资源 优点:存取速度比堆快 缺点:存在栈中的数据大小,与生存区必须是确定的,无灵活性
(2)堆区(heapsegment)存放由new创建的对象和数组,JVM不定时查看Scanner in=new scanner(system.in); 优点:可以动态分配JVM内存 缺点:要在运行时分配JVM内存 速度慢
(3)静态区
(4)代码区
数组:四步
(1)声明数组:告诉计算机数据类型是什么
(2)分配空间:告诉计算机分配几个格子
(3)赋值 : 向分配的格子里放数据
(4)处理数据
demo1
package com.zx.cn;
public class ShuZu {
public static void main(String[] args) {
int []arr=new int[5];
arr[1]=22;
System.out.println(arr[1]);
int []arr2=new int[] {22,33,44,55,66};
System.out.println(arr2[0]);
String arr3[]=new String[5];
if (arr3[0]==null) {
System.out.println("此数组没有数据");
}
}
}
控制台
22
22
此数组没有数据
Java数组内存分析:
数组类型:(1)char[];(2)int[];(3)double[];(4)string[];(5)scanner[];(6)random[];
**数组length属性:**调整数组的长度
数组常见错误:(1)数组大小未写明
(2)数组越界
(3)创建数组并赋值的方式必须在一条语句中完成
demo2:求平均成绩
package com.zx.cn;
import java.util.Scanner;
public class ShuZuAvg {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int arr[]=new int[3];
int sum = 0;
for(int i=0;i<arr.length;i++) {
System.out.println("请输入第"+(i+1)+"个人的成绩");
arr[i]=in.nextInt();
sum=sum+arr[i];
}
int avg=sum/3;
System.out.println("平均成绩为:"+avg);
}
}
控制台
请输入第1个人的成绩
22
请输入第2个人的成绩
33
请输入第3个人的成绩
44
平均成绩为:33
数组排序:
Arrays类的sort()方法:对数组进行升序排列
Arrays.sort(数组名);
demo3:成绩排序
package com.zx.cn;
import java.util.Arrays;
import java.util.Scanner;
public class ArraySortMt {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int[]arr=new int[3];
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第"+(i+1)+"个同学的成绩");
arr[i]=in.nextInt();
}
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"\t");
}
}
}
控制台
请输入第1个同学的成绩
33
请输入第2个同学的成绩
44
请输入第3个同学的成绩
35
33 35 44
数组复制demo:
package com.zx.cn;
import java.util.Arrays;
//数组复制
public class ShuZuCopy {
public static void main(String[] args) {
int arrA[]=new int[] {1,2,5,8,9,10,6,3};
int arrB[]=new int[arrA.length];
//将数组A赋值挨个给数组B
for (int i = 0; i < arrA.length; i++) {
arrB[i]=arrA[i];
}
//排序
Arrays.sort(arrB);
for (int i = 0; i < arrB.length; i++) {
System.out.println(arrB[i]);
}
}
}
1
2
3
5
6
8
9
10
数组查找demo
package com.zx.cn;
import java.util.Scanner;
//数组查找
public class ShuZuSelect {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入你要查找的学生的姓名:");
String name=in.next();
String arr[]=new String[] {"张三","李四","王五","赵六"};
boolean flag=true;
for (int i = 0; i < arr.length; i++) {
if (name.equals(arr[i])) {
flag=true;
break;
}
}
if (flag=true) {
System.out.println("找到此人");
}else {
System.out.println("没有这个人");
}
}
}
控制台
请输入你要查找的学生的姓名:
张三
找到此人
数组插入demo
package com.zx.cn;
import java.util.Scanner;
//数组插入算法
public class ShuZuInsert {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.println("请输入要插入的数字:");
int num=in.nextInt();
int arr[]=new int[] {2,3,7,8,15,22};
arr[arr.length-1]=num;
for (int i =arr.length-1;i>0; i--) {
if (arr[i]<arr[i-1]) {
int c=arr[i];
arr[i]=arr[i-1];
arr[i-1]=c;
}
break;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
控制台
请输入要插入的数字:
10
2
3
7
8
10
15
数组冒泡排序demo
package com.zx.cn;
public class ShuZuMaoPao {
//数组冒泡排序
public static void main(String[] args) {
int[] arr= new int[]{23,12,45,24,87,65,12,14};
for(int j=0;j<arr.length-1;j++) {
for(int i=0;i<arr.length-1;i++) {
if(arr[i]>arr[i+1]) {
int a=arr[i+1];
arr[i+1]=arr[i];
arr[i]=a;
}
}
}
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
控制台
12
12
14
23
24
45
65
87