一、数组
1.初始化
这样初始化也是正确的:
int bb[]=new int[] {1,3,2};
2. 杨辉三角
package PackageA;
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args)
{
int a[][];
int n;
System.out.println("输入杨辉三角的行数:");
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
a=new int[n][];
for(int i=0;i<n;++i)
{
a[i]=new int[i+1];
a[i][0]=a[i][i]=1;
}
for(int i=2;i<a.length;++i)
{
for(int j=1;j<i;++j)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
System.out.println(n+"行的杨辉三角如下:");
for(int i=0;i<n;++i)
{
for(int j=0;j<=i;++j)
{
System.out.print(a[i][j]+" ");
}
System.out.println("");
}
}
}
运行结果:
3. 冒泡排序
package PackageA;
import java.util.Scanner;
public class BubbleSort {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;++i)
{
a[i]=sc.nextInt();
}
for(int i=0;i<n-1;++i)
{
for(int j=1;j<n-i;++j)
{
if(a[j]<a[j-1])
{
a[j]^=a[j-1];
a[j-1]^=a[j];
a[j]^=a[j-1];
}
}
}
for(int i=0;i<n;++i)
{
System.out.print(a[i]+" ");
}
System.out.println("");
sc.close();
}
}
运行结果
4. 选择排序
package PackageA;
import java.util.Scanner;
public class SimpleSort {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;++i)
{
a[i]=sc.nextInt();
}
for(int i=0;i<n;++i)
{
int k=0;
for(int j=1;j<n-i;++j)
{
if(a[j]>a[k])
{
k=j;
}
}
if(k!=n-1-i)
{
a[k]^=a[n-1-i];
a[n-1-i]^=a[k];
a[k]^=a[n-1-i];
}
}
for(int i=0;i<n;++i)
{
System.out.print(a[i]+" ");
}
System.out.println("");
sc.close();
}
}
运行结果
5.二分查找
package PackageA;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Random;
public class BinaryQuery {
public static int binaryQuery(int r[],int value)
{
int n=r.length;
int left=0,right=n-1;
int mid=(int)(left+right)/2;
while(left<=right)
{
if(r[mid]==value)
{
return mid;
}
else if(r[mid]<value)
{
left=mid+1;
}
else
{
right=mid-1;
}
mid=(int)(left+right)/2;
}
return -1;
}
public static void print(int []r)
{
System.out.println("数据如下:");
for(int a:r)
{
System.out.print(a+" ");
}
System.out.println("");
}
// 主函数
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int r[]= new int[20];
Random random=new Random();
for(int i=0;i<r.length;++i)
{
r[i]=random.nextInt(100);
}
Arrays.parallelSort(r);
print(r);
System.out.println("输入要查找的数据:");
int value=sc.nextInt(),result;
result=binaryQuery(r,value);
if(result>0)
{
System.out.println(r[result]+"下标为"+result);
}
else
{
System.out.println("没有找到"+value);
}
}
}
运行结果
二、复杂类和对象简介
1.定义与构造方法
在java中,默认将Object类处理成所有类的父类。
可通过super调用父类的构造方法,缺省时调用父类的默认构造方法。
2. 方法的继承、覆盖、重载
(1)方法覆盖:要求子类的方法名称、返回类型及参数表必须与父类一致
注意:
- 子类方法不能缩小父类方法的访问权限
- 子类方法不能抛出比父类方法更多的异常
- 父类的静态方法不能被子类覆盖为非静态方法
- 父类的静态方法可以被子类的静态方法给覆盖(隐藏)
- Java虚拟机吧静态方法和所属的类绑定,把实例方法和所属的实例绑定
- 父类的非静态方法不能被子类覆盖为静态方法
- 父类的私有方法不能被子类覆盖
- 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)
- 父类的非抽象方法可以被覆盖为抽象方法
(2)方法重载:要求方法名相同
注意:
- 方法的参数类型、个数、顺序至少有一项不同
- 方法的返回值类型可以相同,也可以不同
- 方法的修饰符可以不相同
(3)多态
如果父类的某个方法,不被子类继承,则可以在该种方法前面加上final关键字修饰。
3.异类集合
在一个集合中,所包含的元素对象属于不同类的实例,但这些元素具有共同的祖先。
在java语言中,可以创建具有共同祖先类的对象的集合。
类变量 instanceof 类名
&
(类名)类对象
4.final关键字
一个即是static又是final的变量,表示它被保存在一段不能改变的内存空间中,而且在定义时就必须对它进行初始化。
注意:
- final修饰对象时,使该对象引用恒定不变(即不能指向其他对象)。
- 子类可以继承final修饰的方法,但子类不能重写final修饰的方法。