数组&面向对象

输出一个三角形

public class Demo1 {

	public static void main(String[] args) {
		int row = 4;
		for(int i = 1;i <= row;i++){
			for(int a = row - i;a >= 0;a--){
				System.out.print("0");
			}
			for(int b = 1;b <= 2*i-1;b++){
				System.out.print("*");
			}
			System.out.println();
		}
		
	}
}

输出三角形主要是定义一个二维数组,分别输出空格和***,使其形成一个三角形,这里主要运用了两个for循环,思路对了很好编译出来,在后面你们可以尝试输出一个菱形,跟三角形的思路差不多。

对数组里面的元素进行排序

public class Demo3 {

	public static void main(String[] args) {
		int[] a = {100,40, 60, 87, 34, 11, 56, 0};
		
		for(int i = 0;i<a.length;i++){
			for(int j = i + 1;j < a.length;j++){
				if(a[i] > a[j]){
					int temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
			
		}
		for(int n:a){
			System.out.print(n+" ");
		}		

	}

}

这个是快速排序的算法对数组进行排序,主要思路是第一个元素和后面所有元素进行比较,然后定义一个变量使其交换。

其实更简单的方法可以用Arrays中的sort()方法,里面定义了排序算法,这个只是锻炼一下思路。折半查找可以用Arrays.binarySearch()方法实现。

约瑟夫环

这是一个经典的算法题

public class Demo7 {

	public static void main(String[] args) {
		//声明布尔类型数组,用于标记这个人是否在圈中
		boolean[] b = new boolean[100];
		//初始化所有人都位于圈中(设置true)
		for(int i = 0;i < b.length;i++){
			b[i] = true;
		}
		
		//初始化圈中的总人数
		int len = b.length;
		//声明计数器,统计是否到达3
		int count = 0;
		//初始化索引,记录当前数到圈中的位置
		int index = 0;
		
		//开始循环报数
		while(len > 1){
			//判断当前位置的人是否在圈中
			if(b[index]){
				//计数器递增
				count++;
				//判断是否到达3
				if(count == 3){
					//人数减少
					len--;
					//标记此人离开圈子
					b[index]=false;
					//计数器归零
					count = 0;
				}
			}
			//数组索引递增
			index++;
			if(index == b.length){
				index = 0;
			}
		}
		
        //循环判断,数组中为true的元素的位置(即为剩下的人原来的位置)
		for(int i = 0;i<b.length;i++){
			if(b[i]){
				System.out.println(i);
				break;
			}
		}
	}
}

这个题主要考的是大家的逻辑能力

面向对象

大家都知道,java是一门面向对象的语言,那么要介绍面向对象,我们要先清楚它的组成。首先要介绍的就是类。

类是什么?类就是一类具有相同特征事务的抽象的描述。
它的语法为:[修饰符]+class类名称{
[属性的声明]
[方法的声明]
}
比如:

public class People{
    
    String id;
    String name;
    String sex;
    int age;
    boolean marray;
    
    public void speak(){
        
    }
    
    public void eat(){
        
    }
    
}

这就是一个最基本的类,类的特征都表现出来了。既然是一种面向对象的语言,这其中肯定还有对象。

对象

在java中如果说类是抽象的,那么对象就是具体的
对象创建的语法:
类名称 引用名 = new 构造器();

Student s = new Student();
People p = new People("翠花");

这里有可能会问为什么一个后面有个“翠花”,这里是进行的赋值操作,那么怎么赋值的哪,这里就要讲到一个东西构造器了

构造器

他的作用是在对象创建时,用于完成对于对象的一些初始化操作(赋值什么的)

语法

[修饰符] 类名([参数列数]){

[执行体]

}
例如:

public Emp(){
		
}

public Emp(int empno,String job2){
    System.out.println("构造方法被执行");
    eno = empno;
    job = job2;
}

注意:构造器名称必须和类名称一致,构造器没有返回值,一个类中可以存在多个构造器,但是必须每个构造器中的参数个数,类型,顺序有一个不一样。
最后在将一个面向对象三大特征之一的封装。

面向对象之封装

面向对象的程序设计一般都包含了以下三大特征:
1:封装
2:继承
3:多态
为什么要对对象进行封装哪?是因为这样使得我们的程序更加的安全,使得外部不能轻易访问到我们程序里面的数据,从而对我们的隐私什么的进行保护

public class Customer {

	private int id;
	private int vipLevel = 3;
    
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getVipLevel() {
		return vipLevel;
	}
	public void setVipLevel(int vipLevel) {
		this.vipLevel = vipLevel;
	}
}

类的封装表现形式通常为:将类中的属性通过private私有化,然后提供public方法以此对外提供访问接口

封装的优点

  1. 提高了对象数据的安全性
  2. 提高代码的可复用性
  3. 提高类的内聚性,降低耦合度
最后欢迎大家提问,有不懂的或者我介绍的有问题的请提出来