JAVA | 面向对象 | 数组的应用
- 数组的声明与创建:
//声明
int[] a;
int a[];
//此时在栈空间开辟变量名的存储空间
//创建
int[] a= new int[10];
double b[]= {1.0,2.0,3.0} //直接指定初值
//此时在堆内存开辟空间,并将地址传给了栈空间内变量名的空间
2.类也可作为数据类型
package text;
public class TextArrays {
public static void main(String[] args) {
Man m[] =new Man[3];
m[0]=new Man(1,2);
m[1]=new Man(2,3);
}
}
class Man //无()
{
private int age;
private int id;
Man(int age,int id)
{
this.age=age;
this.id=id;
}
}
由于class Man的修饰符是default,可以被 同一个包中的所有类引用.它在void main()函数的前后都无所谓
3.二分查找
关键是键盘输入的这两句:
//声明:
BufferedReader keyin= new BufferedReader(new InputStreamReader(System.in));
c1=keyin.readLine(); //等价于cin>>c1;
search=Integer.parseInt(c1); //取出字符串转换成整形
package text;
import java.io.*;
class Binsearch
{
int binarysearch(int[] a,int s)
{
int low=0;
int high=a.length-1;
int mid=(low+high)/2;
while(low<=high&&a[mid]!=s)
{
if(s>a[mid])
low=mid+1;
else
high=mid-1;
mid=(high+low)/2;
}
if(low>high) {mid=-1;}//表示不存在
return mid;
}
}
public class TextArrays
{
public static void main(String[] args) throws IOException //表示此方法有抛出IOException异常的可能性
{
BufferedReader keyin= new BufferedReader(new InputStreamReader(System.in));
int i, search,mid;
String c1;
int arr[]= {2,4,7,18,25,34,56,68,89};
System.out.println("打印原始数据");
for(i=0;i<arr.length;i++) {System.out.print(arr[i]+" ");}
System.out.println("\n");
System.out.println("输入要查找的整数");
c1=keyin.readLine(); //等价于cin>>c1;
search=Integer.parseInt(c1); //取出字符串转换成整形
Binsearch b1=new Binsearch();
mid=b1.binarysearch(arr, search);
if(mid==-1) {System.out.println("没找到");}
else
{System.out.println("要查找的整数的下标是:"+mid);}
}
}
3.数组元素做实参
在交换两个元素时发现方法中可以交换元素,main()中就是不行.
package text;
public class TextPassing
{
public static void main(String[] args)
{
String[] s=new String[2];
s[0]="张三";
s[1]="李四";
System.out.println("数组初始态");
for(int i=0;i<s.length;i++)
{
System.out.println(s[i]);
}
System.out.println();
Exchange ex=new Exchange();
ex.exchanges(s[0], s[1]);
System.out.println("main()中的元素未交换:");
System.out.println(s[0]);
System.out.println(s[1]); //swap方法中参数改变了,main()不改变
System.out.println();
}
}
class Exchange
{
void exchanges(String a,String b)
{
String temp=a;
a=b;
b=temp;
System.out.println("swap()中的元素可交换");
System.out.println(a);
System.out.println(b); //swap方法中参数改变了,main()不改变
}
}
控制台结果如下:
数组初始态
张三
李四
swap()中的元素可交换
李四
张三
main()中的元素未交换:
张三
李四