数组创建
数组在内存中是一块连续的空间
,可以保存相同类型
多个数据的容器(数组是定长的)
动态初始化:
- 语法1: 数据类型[] 数组名 = new 数据类型[长度];
- 语法2: 数据类型 数组名[] = new 数据类型[长度];
静态初始化
- 语法1:数据类型[] 数组名 = {数据1,数据2,…};
- 语法2:数据类型 数组名[] = {数据1,数据2,…};
- 语法3:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,…};
可变参数
数据类型… 参数名(int… a)
特点:可以是0个或者是多个,可变参数只能放在参数列表的最后,可变参数可以当做数组来使用,也可以将数组作为参数
public static void m1(int... a) {
System.out.println(a[0]);
System.out.println(a[1]);
}
传递方式
值传递和引用传递
- 值传递:传递的是值,所以原来的值本身不会改变,所有的基本类型+String都属于值传递
- 引用传递:传递的是地址,所以会对原来的内容有影响,所有引用数据类型都属于引用传递
排序方法
冒泡排序:
package com.jsh.day06;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Demo02 {
public static void main(String[] args) {
int[] arr = {11,32,45,65,78,23,5,23,42,34,25};
//sort2(arr);
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
}
/*
* 冒泡排序
*/
public static void sort1(int arr[]) {
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 t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
}
/*
* 优化1:每轮比较次数
*/
public static void sort2(int arr[]) {
for (int j = 0; j < arr.length-1; j++) {
for (int i = 0; i < arr.length-1-j; i++) {//最后j位不比较
if(arr[i]>arr[i+1]) {
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
}
/*
* 优化2:比较轮数
*/
public static void sort3(int arr[]) {
for (int j = 0; j < arr.length-1; j++) {
boolean flag=true;//信号量
for (int i = 0; i < arr.length-1-j; i++) {//最后j位不比较
if(arr[i]>arr[i+1]) {
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
flag=false;
}
}
if (flag) {
break;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
}
}
选择排序:
package com.jsh.day06;
public class Demo03 {
public static void main(String[] args) {
int [] arr= {1454,23,123,43,5,65,76,32};
sort1(arr);
}
//选择排序
public static void sort1(int array[]) {
for (int i = 0; i < array.length-1; i++) {
int min =i;
for (int j = i+1; j < array.length; j++) {
if(array[min]>array[j]) {
int t=array[j];
array[j]=array[min];
array[min]=t;
}
}
}
for (int j = 0; j < array.length; j++) {
System.out.print(array[j]+",");
}
}
}
练习(管理系统)
package com.jsh.day06;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.text.StyleContext.NamedStyle;
public class WifeManager {
//表示所有wife
static String [] names= {};
//表示數組中有效元素個數
static int size =0;
//判斷商品是否存在
public static int exists(String name) {
for (int i = 0; i < size; i++) {
if(names[i].equals(name)) {
return i;
}
}
return -1;
}
public static void add(String name) {
//1.判斷數組是否需要擴容
if(size==names.length) {
names=Arrays.copyOf(names, names.length+5);
}
//2.判斷商品是否存在
int index=exists(name);
if(index!=-1) {
System.out.println("商品已經存在");
return;
}
//3.將商品添加到數組中
names[size]=name;
//4.size++
size++;
}
public static void delete(String name) {
//2.判斷商品是否存在
int index=exists(name);
if(index==-1) {
System.out.println("商品不存在,無法刪除");
return;
}else {
for (int i = index; i < size-1; i++) {
names[i]=names[i+1];
}
names[size-1]=null;
size--;
}
}
public static void updata(String oldName,String newName) {
//2.判斷商品是否存在
int index=exists(oldName);
if(index==-1) {
System.out.println("商品不存在,無法修改");
return;
}
//2.判斷新商品是否存在
int index2=exists(newName);
if(index2!=-1) {
System.out.println("商品已存在,無法修改");
return;
}
names[index]=newName;
}
public static void select() {
if(size==0) {
System.out.println("暫無商品");
}else {
for (int i = 0; i < size; i++) {
System.out.print(names[i]+"\t");
}
System.out.println();
}
}
public static void menu() {
System.out.println("歡迎來到老婆管理系統");
Scanner input=new Scanner(System.in);
System.out.println("請問您是否需要老婆:");
String wife = input.next();
if(wife.equals("否")) {
System.out.println("您已被踢出群聊");return;
}else if(wife.equals("是")) {
boolean flag=true;
while(flag) {
System.out.println("您可以通過老婆管理系統進行如下操作:");
System.out.println("1.增加老婆\t2.修改老婆\t3.刪除老婆(不建議)\t4.查詢老婆\t5.退出");
System.out.println("輸入您要進行的操作:");
int n=input.nextInt();
switch(n) {
case 1:
System.out.println("請輸入要添加的老婆:");
String a1=input.next();
add(a1);
break;
case 2:
System.out.println("請輸入要修改的老婆:");
String a2=input.next();
System.out.println("請輸入修改后的老婆:");
String a3=input.next();
updata(a2,a3);
break;
case 3:
System.out.println("請輸入要刪除的老婆:");
String a4=input.next();
delete(a4);
break;
case 4:
System.out.println("您擁有的老婆有:");
select();
System.out.println();
break;
case 5:
flag=false;
break;
}
}
}else {
System.out.println("請正確輸入內容!");
}
}
public static void main(String[] args) {
add("香菱");
menu();
}
}