JAVA 2022.7.13课程总结

本文介绍了JAVA编程中的插入排序算法,并通过示例代码详细展示了如何实现。此外,还讲解了如何去除数组中的重复元素,以及探讨了JAVA中的特殊值和方法知识点,包括可变参数、排序方法、构造方法以及方法重载等概念。
摘要由CSDN通过智能技术生成

  一、插入排序  

public static void main(String[] args) {
        //插入排序
        int[] arr= {12,34,5,7,8,3,32};
        //i代表当前元素的下标
        for(int i=1;i<arr.length;i++) {
            //元素

            int item=arr[i];
   //向前比较,比自身大的元素向后移位,直到找到不大于自身的元素A
            //把自身放到A的后面
            //j代表要比较元素的下标
            int j;
            for(j=i-1;j>=0;j--) {
                if(item<arr[j]) {
                    //比自身大的元素向后移
                    arr[j+1]=arr[j];
                    
                }else {
                    break;
                }
            }
            
                arr[j+1]=item;
            //System.out.println(Arrays.toString(arr));
        }

        System.out.println(Arrays.toString(arr));
    }

例题:对一个数组去重

    //定一个方法,数组去重的结果
    static int[] norepeat(int[] arr) {
        int[] result=new int[arr.length]; 
        //当前元素之后是否有重复,有重复不操作,无重复,保存在新数组中
        //保存位置
        int index=0;
        //代表没有相同的
        boolean flag=false;
        for(int i=0;i<arr.length;i++)    {
            //arr[i]--当前元素
            //查找是否有重复的元素
            for(int j=i+1;j<arr.length;j++) {
                if(arr[i]==arr[j]) {
                    //找到相同
                    flag=true;
                    break;
                    
                }
        }
            if(!flag) {
                result[index]=arr[i];
                index++;
            }
        }
        return result;
        }

跳出多重循环 

        out:for(;;) {
            for(int i=0;i<10;i++) {
                if(i==6) {
                    //跳出多重循环
                    break out;
                }
            }

二、特殊值

        //特殊值0 0.0 -0.0 无穷大 负无穷大 NAN
        int i=0;
        double a1=0.0;
        double a2=-0.0;
        System.out.println(a1);  //0.0
        System.out.println(a2);    //-0.0
        System.out.println(a1==a2);//true
        System.out.println(0==a2);//true
        
        // i=12/0; 整数0为除数,报数学运算异常Arithmetic
        a1=1/0.0;
        System.out.println(a1); //Infinity正无穷大
        System.out.println(1/-0.0);//-Infinity负无穷大
        System.out.println(-1/0.0);//-Infinity负无穷大
        
        System.out.println(0/0.0);//NaN:not a number 是值但是不是数字
        a1=0/0.0;
        System.out.println(a1);//NaN
        

       round是+0.5向下取整


        double d1=Math.ceil(2.3);
        d1=Math.floor(2.4);
        long l1=Math.round(1.8);
        System.out.println(l1);//2
        System.out.println(Math.round(0.5));//1
        System.out.println(Math.round(-0.5));//0
        System.out.println(Math.round(-1.5));//-1
        System.out.println(Math.round(0.4));//0
        System.out.println(Math.round(0.8));//1
        System.out.println(Math.round(-0.4));//0
        System.out.println(Math.round(1/0.0));//long的最大值9223372036854775807
        System.out.println(Long.MAX_VALUE);//long的最大值9223372036854775807
        System.out.println(Math.round(1/-0.0));//long的最小值-9223372036854775808
        System.out.println(Long.MIN_VALUE);//long的最小值-9223372036854775808 

三、方法知识点

1.例题:利用sort排序数组 

//调用

public static void main(String[] args) {
        int[] arr= {12,3,5,1,44,8};
        sort(arr);
        System.out.println(Arrays.toString(arr));

}

//定义排序方法

    //void不需要返回值
    public static void sort(int[] arr) {
        Arrays.sort(arr);
        return;//void方法可以使用return  终结方法
    }

2.可变参数 

    //可变参数
    //数量可变,类型不可以变
    //一个方法中最多有一个可变参数,并且可变参数必须放在参数列表最后

    public static void main(String[] args) {

       method(1,2,3);
    }

//调用
    static void method(int j,double...i ) {
        System.out.println(i.length);
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
    }

四、面向对象

1.定义和使用类

    public static void main(String[] args) {
        //面向对象
        //对象&类
        //类:人类 
        //对象:具体的实例
        //编程中,先定义类,才能实例化对象
        int a=12;
        //实例化一个Person类的对象
        Person per1=new Person();
        //对象属性的赋值
        per1.name="张三";
        per1.eat();
        Person per2=new Person();
        per2.name="李四";
        System.out.println(per1.name);
        System.out.println(per2.name);
        per2.eat();
    }        
}
class Person{
    //声明在类中的变量 叫 全局变量 属性  在整个类中都生效的变量
    String name;
    String sex;
    int age;
    //在本类中可以直接调用类中声明的属性
    void eat() {
        //局部变量 在执行代码块中声明的变量
        int i=0;
        //调用变量就近原则,
        String name="aaa";
        //使用this标注使用属性变量
        System.out.println(this.name+"正在吃饭");
    }

2. 四种访问权限修饰符
    //public protected default private
    //publice 公共的
    //default 本包下的
    //private 私有的 

    //public static void main(String[] args) {
    //本包下的类默认可以访问本包下所有的类
    //所有的类默认引入java.lang包
    //在类文件中只能有一个public类,并且这个类的类名必须和文件名一致
    //main方法必须写在public类中
        
        //公共方法
        public void test1() {}
        //私有方法  只能在自身类中才能访问到
        private void test2() {
            String a="sd";
        }        
    }
class Test{
    void test() {
        Easy7 e7=new Easy7();
        e7.test1();
        //e7.test2(); //调用不到
    }
}

调用外包的类:

    //引入com.easy3的所有类
    import com.easy3.*;
    //如果一个类中要使用两个重名的类型,需要使用类的全名来标注
    com.easy1.Easy3 ee=new com.easy1.Easy3();

3.封装

    //封装:将属性私有化,提供公共访问方法

public class Easy {
    public static void main(String[] args) {
    List list=new List();
    list.add(1);
    list.print();
    //list.value[1]=12;
    //System.out.println(list.size);
}
}
class List{
    private int size=0;
    private int[] value=new int[16];
    public int size() {
        return this.size;
    }
    void add(int item) {
        value[size]=item;
        size++;
    }
    public void print() {
        System.out.println(Arrays.toString(value));
    }
}

get()  set()方法   get获取  set设置

public class Easy2 {
    public static void main(String[] args) {
        a aa=new a();
        aa.setAge(15);
        int i=aa.getAge();
        System.out.println(i);
    }
}
class a{
    private String code;
    private String name;
    private int age=1;
    
    
    public String getCode() {
        return this.code;
    }
    public void setCode(String code) {
        this.code=code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

 4.继承

//继承
///java中运行单继承,可以多重继承
//java中所有类的父类是Object
//使用extends标注继承父类
//B子类 A父类
//子类继承父类,子类中就具有父类中可继承的属性和方法
//实现代码的复用
 

    public static void main(String[] args) {
        A a=new A();
        a.test();
        System.out.println(a.surname);
        B b=new B();
        b.test();
        System.out.println(b.surname);
    }
}
class A{
    String surname;
    //私有属性
    private int money;
    void test() {    
    }
}
class B extends A{
    void test() {
        System.out.println(surname);
        //System.out.println(money);  //私有属性不继承
    }
}

 构造方法:

public class Demo {
    public static void main(String[] args) {
        Demo a=new Demo("张三");
    }
    String name;
        //构造方法
        //构造方法名和类名一致
        //作用:初始化对象,准备资源
        //每个类,系统会自动提供一个无参构造方法
        //一旦自定义了构造方法,系统提供的默认构造方法就不存在了
        public Demo() {
        }
        public Demo(String name) {
            this.name=name;
        }
}

public class Son extends Parent {
    //super 可以使用super调用父类中的属性
    public String name;
    public Son(String str1,String str2) {
        //子类的构造方法第一行,必须调用父类的构造方法super关键字
        //子类的构造方法默认第一行调用父类的无参构造方法  
        super("");
        this.name=str1;
        super.name=str2;
    }
    void test() {
        System.out.println(code);
        System.out.println(sex);
        System.out.println(super.name);
        System.out.println(name);
    }
    public static void main(String[] args) {
        Son s=new Son("aaa","bbb");
        s.test();
    }
}

 

    //方法的重载
    public String test() {
        return "";
    }
    public String test(int a,double b) {
        return "";
    }
    public String test(double b,int a) {
        return "";
    }
    public void test(int a) {
        
    }

public class Son extends Person{
    //子类对父类中继承过来的方法进行重新定义--方法重写
    //父类中的方法不适应当前业务
    //必须是子类重写父类中的方法
    //方法名必须一样
    //返回值类型必须一样
    //参数列表必须一样
    //访问权限可以可以变大(更开放)
    @Override   //如果重写不报错
    public void test() {
        System.out.println("SON method");
    }
    public void test1() {
        Son s=new Son();
        //向上转型 父类的指针指向子类的对象或实例
        Person p=new Son();
        p=new Son2();
        Object obj=new Son();
    }
    public static void demo(Person p) {
        p.test();
    }
    public static void main(String[] args) {
        Person p=new Person();    
        //多态
        //继承 可以向上转型 重写
        //在程序运行过程中,一个父类的指针执行的方法,可能会出现
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值