数组的基本特点:
1.数组长度是确定的,一旦被创建,就不能改变
2.数组元素类型必须相同
3.数组类型可以是任何数据类型,包括基本类型和引用类型
4.数组变量属于引用类型,数组也是对象
数组是对象,那么数组中的元素就是对象的属性,所以当创建完数组还未开始赋值的时候,数组中元素的值为各个类型的默认初始值
public class test_01 {
public static void main(String[] args) {
int[] s;
//动态赋值
/* int[] j=new j[3];
j[0]=1;
j[1]=10;
j[2]=11;
*/
s=new int[10];
for (int i=0;i<10;i++){
//s[i]=2*i+1;//数组是对象,数组中的元素就是对象的属性
System.out.print(s[i]+"\t");
}
}
}
import java.util.Arrays;
class MAN{
private int id;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "id:"+id+",age:" +age;
}
public MAN(){};
public MAN(int id, int age){
this.id=id;
this.age=age;
}
}
public class test_2 {
public static void main(String[] args) {
MAN[] mans={
new MAN(1,11),
new MAN(2,22),
new MAN(3,33),
new MAN(4,44),
new MAN(5,55)
};
//System.out.println(mans);
for(int i=0;i<mans.length;i++){
MAN man=mans[i];
System.out.println(man);
}
//增强for循环(读取元素的值)
for(MAN man:mans){
System.out.print(man+"\t");
}
}
}
Arrays类测试
import java.lang.reflect.Array;
import java.util.Arrays;
public class gongjv {
public static void main(String[] args) {
int[] a={100,10,60,8,200,300,400};
int[] b={1,2,33,15,4,6,8,99,38,76,56};
int[] c={10,2,33,15,4,6,8,99,38,76,56};
//输出数组的内容,此处Arrays.toString是Arrays的静态方法
System.out.println(Arrays.toString(a));
//从小到大进行排序.
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//使用二分查找法,查找之前必须先对数组排序
Arrays.sort(b);
System.out.println(Arrays.toString(b));
System.out.println("该元素的索引:"+Arrays.binarySearch(b,8));
//对数组进行填充
System.out.println("填充前的数组C:"+Arrays.toString(c));
Arrays.fill(c,2,5,20);
System.out.println("填充后的数组C:"+Arrays.toString(c));
}
}
数组的拷贝
public class test_zhengqiang {
public static void main(String[] args) {
String[] ss={"aa","bb","cc","dd","ee","ff"};
String[] gg=new String[6];
//数组拷贝
System.arraycopy(ss,1,gg,0,3);
for(int i=0;i<gg.length;i++) {
System.out.println(gg[i]);
}
//增强for循环专门读取数组或集合中所有元素
for(String temp:ss){
System.out.println(temp);
}
}
}
二维数组
public class test_erwei {
public static void main(String[] args) {
//二维数组的声明
int[][] a=new int[3][];
a[0]=new int[3];
a[1]=new int[4];
a[2]=new int[5];
int[][] b={{1,2,3,4},{5,6,7},{8,9}};
System.out.println(b[1][2]);
}
}
使用二维数组存放表格数据
import java.util.Arrays;
public class test_liebiao {
public static void main(String[] args) {
Object[] a1={1001,"张三",18,"学生","2019-10"};
Object[] a2={1002,"李四",17,"班长","2019-11"};
Object[] a3={1003,"王五",19,"学习委员","2019-12"};
Object[][] temp=new Object[3][];
temp[0]=a1;
temp[1]=a2;
temp[2]=a3;
for(int i=0;i<temp.length;i++) {
for(int j=0;j<temp[i].length;j++) {
System.out.print(temp[i][j]+"\t");
}
System.out.println("");
}
//System.out.println(Arrays.toString(temp[0]));
}
}
import java.util.Arrays;
class Emp{
private int id;
private String name;
private int age;
private String job;
private String hire;
public Emp(){}
public Emp(int id, String name, int age, String job, String hire) {
this.id = id;
this.name = name;
this.age = age;
this.job = job;
this.hire=hire;
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAge() { return age+"岁"; }
public void setAge(int age) { this.age = age; }
public String getJob() { return job; }
public void setJob(String job) { this.job = job; }
public String getHire() { return hire; }
public void setHire(String hire) { this.hire = hire; }
public String toString(){
return getId()+"\t"+getName()+"\t"+getAge()+"\t"+getJob()+"\t"+getHire();
}
}
public class test_javabean {
public static void main(String[] args) {
Emp emp1=new Emp(1001,"张三",12,"程序员","2019-10");
Emp emp2=new Emp(1002,"李四",17,"设计师","2019-11");
Emp emp3=new Emp(1003,"王五",19,"产品经理","2019-12");
//Emp[] emps={emp1,emp2,emp3}
Emp[] emps=new Emp[3];
emps[0]=emp1;
emps[1]=emp2;
emps[2]=emp3;
for(int i=0;i<emps.length;i++) {
System.out.println(emps[i].getId()+" "+emps[i].getName());
}
for(int i=0;i<emps.length;i++) {
//for(int j=0;j<emps[i])
System.out.println(emps[i]);
}
}
}
小练习
嵌套循环未能实现
class shangpin{
private int id;
private String name;
private String xinghao;
private double jiage;
private double zhekou;
public shangpin(){}
public shangpin(int id, String name, String xinghao, double jiage, double zhekou) {
this.id = id;
this.name = name;
this.xinghao = xinghao;
this.jiage = jiage;
this.zhekou = zhekou;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getXinghao() {
return xinghao;
}
public void setXinghao(String xinghao) {
this.xinghao = xinghao;
}
public double getJiage() {
return jiage;
}
public void setJiage(double jiage) {
this.jiage = jiage;
}
public double getZhekou() {
return zhekou;
}
public void setZhekou(double zhekou) {
this.zhekou = zhekou;
}
public String toString(){
return getId()+"\t"+getName()+"\t"+getXinghao()+"\t"+getJiage()+"\t"+getZhekou();
}
}
public class test_job {
public static void main(String[] args) {
shangpin sp1=new shangpin(1,"鼠标","BZ_001",99.21,0.9);
shangpin sp2=new shangpin(2,"玩偶","WO_035",401.1,0.79);
shangpin sp3=new shangpin(3,"书 ","BK_024",30.1,0.87);
shangpin sp4=new shangpin(4,"西装","XZ_011",499.21,0.89);
shangpin sp5=new shangpin(5,"手机","SJ_003",1999.21,0.79);
shangpin[] sps=new shangpin[5];
sps[0]=sp1;
sps[1]=sp2;
sps[2]=sp3;
sps[3]=sp4;
sps[4]=sp5;
System.out.println(sps[1].getId());
/* for(int i=0;i<sps.length;i++){
System.out.println(sps[i]);
}*/
for(int i=0;i<sps.length;i++){
if(sps[i].getJiage()*sps[i].getZhekou()>100.0) {
System.out.println(sps[i]);
System.out.println("商品最终售价为:"+sps[i].getJiage()*sps[i].getZhekou());
}/*else{
System.out.println(sps[i]);
}*/
}
}
}
若一个数组中有多个数据类型,该如何比较?
可以使用comparable接口,
package com.shuzu;
import java.util.Arrays;
public class TestComparable {
public static void main(String[] args) {
Man2[] manss={
new Man2(3,"a"),
new Man2(6,"b"),
new Man2(1,"c")
};
Arrays.sort(manss);
System.out.println(Arrays.toString(manss));
}
class Man2 implements Comparable
{
int age;
int id;
String name;
public Man2(int age,String name){
super();
this.age=age;
this.name=name;
}
public String toString(){
return this.name;
}
public int compaerTO(Object o){
Man2 man=(Man2) o;
if(this.age<man.age){
return -1;
}
if(this.age>man.age){
return 1;
}
return 0;
}
}
二分查找
import java.util.Arrays;
public class test_erfen {
public static void main(String[] args) {
int[] ef={2,5,66,61,54,16,3,1,14,25,106,84,63,654,44,35,1654,6,456,4};
int srarchWord = 14;
Arrays.sort(ef);
System.out.println(Arrays.toString(ef));
System.out.println(srarchWord+"元素的索引:"+binarySearch(ef,srarchWord));
}
public static int binarySearch(int[] ef,int srarchWord){
int low=0;
int high=ef.length-1;
while (low<=high){
int middle =(low+high)/2;
if(srarchWord==ef[middle]){
return middle;
}
if(srarchWord<ef[middle]){
high=middle-1;
}
if(srarchWord>ef[middle]){
low=middle+1;
}
}
return -1;
}
}
冒泡排序
public class test_maopao {
public static void main(String[] args) {
int[] mp={3,5,4,91,51,2,12,335,15,994,442};
bubbleSort(mp);
System.out.println(Arrays.toString(mp));
}
public static void bubbleSort(int[] mp){
int temp=0;
for(int i=0;i<mp.length;i++){
for(int j=0;j<mp.length-1;j++){
if(mp[j]>mp[j+1]){
temp=mp[j+1];
mp[j+1]=mp[j];
mp[j]=temp;
}
}
}
}
}