java入门学习笔记(七)——数组、杨辉三角、冒泡排序、选择排序、二分查找。复杂类与对象的简介、定义与构造方法、方法继承、覆盖、重载、多态、异类集合、final关键字

一、数组

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)方法覆盖:要求子类的方法名称、返回类型及参数表必须与父类一致

注意:

  1. 子类方法不能缩小父类方法的访问权限
  2. 子类方法不能抛出比父类方法更多的异常
  3. 父类的静态方法不能被子类覆盖为非静态方法
  4. 父类的静态方法可以被子类的静态方法给覆盖(隐藏)
  5. Java虚拟机吧静态方法和所属的类绑定,把实例方法和所属的实例绑定
  6. 父类的非静态方法不能被子类覆盖为静态方法
  7. 父类的私有方法不能被子类覆盖
  8. 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)
  9. 父类的非抽象方法可以被覆盖为抽象方法

(2)方法重载:要求方法名相同

注意:

  1. 方法的参数类型、个数、顺序至少有一项不同
  2. 方法的返回值类型可以相同,也可以不同
  3. 方法的修饰符可以不相同

(3)多态

如果父类的某个方法,不被子类继承,则可以在该种方法前面加上final关键字修饰。

3.异类集合

在一个集合中,所包含的元素对象属于不同类的实例,但这些元素具有共同的祖先。
在java语言中,可以创建具有共同祖先类的对象的集合。

类变量 instanceof 类名
&
(类名)类对象

4.final关键字

一个即是static又是final的变量,表示它被保存在一段不能改变的内存空间中,而且在定义时就必须对它进行初始化。

注意:

  1. final修饰对象时,使该对象引用恒定不变(即不能指向其他对象)。
  2. 子类可以继承final修饰的方法,但子类不能重写final修饰的方法。

猜你喜欢

转载自blog.csdn.net/qq_41563270/article/details/108830022
今日推荐