数组&面向对象
输出一个三角形
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方法以此对外提供访问接口
封装的优点
- 提高了对象数据的安全性
- 提高代码的可复用性
- 提高类的内聚性,降低耦合度
最后欢迎大家提问,有不懂的或者我介绍的有问题的请提出来