Java第二周学习

 多维数组:二维数组                   
   语法: 
    动态初始化:
     数据类型[][] 变量名 = new 数据类型[][];  
    第一个[] 代表一个二维数组中 有几个 一维数组;(行)
    第二个[] 代表一个一维数组中 有几个 元素;  (列) 
     静态初始化:   
       (第一种方法)数据类型[][] 变量名 = { {元素 } , {元素 }};
       (第二种方法)int[][] 变量名 = new int[][]{{元素},{元素}};   
=============================================================
排序算法:
    1.内存排序
    (1)冒泡排序:相邻的两个数比较,将较大的数向后移动,放到整个数组的末尾。
         //控制的比较次数
            for(int i = 0;i < arr.length-1 ;i++){ 模板代码
                 //获取元素, 和 索引
                 for( int j = 0 ;j < arr.length-1-i  ;  j++){
                     if(arr[j] > arr[ j + 1]){
                          int temp = arr[j];  
                          arr[j] = arr[j+1]; //替换
                          arr[j+1] = temp;
                     }
                 }
            }
         //输出排序后的数组
            for(int i = 0 ;i < arr.length ;i++){
                Sytem.out.println(arr[i]);
            }
======================================================================
    (2)选择排序:找到整个数组中, 元素最小值的下标,然后拿着这个元素,
        (不稳定)       跟第一个有序序列比较,如果小,就交换位置,不小,就继续比较。
             
             //先假设第一个数就是最小的元素
             int[] arr = {5,4,23,4,23,13,1,9};
             
                 for(int i = 0; i < arr.length ;i++){
                      int min = i; //记录最小的下标
                      for(int j = i+1 ; j < arr.length; j++){
                         if(arr[min] > arr[j]){
                          min = j;
                            }
                         }
                          int temp = arr[i]; // 1 
                          arr[i] = arr[min];
                          arr[min] = temp;    
                     }    
                 //输出排序后的数组
                      for(int i = 0 ;i < arr.length ;i++){
                         Sytem.out.println(arr[i]);
                     }
=====================================================================
    (3)插入排序:将后面的元素与前面的元素作比较,如果比前面的数小,就插入到前面去
               //假设第一个数是有序的,将第二个数与前面的数作比较
        int[] arr = {3,3,12,2,35,1,2};
        for(int i = 1 ; i < arr.length; i++){
                //记录一下第二个元素
                int temp = arr[i];
                int j = i; //j 另一个数的下标
                while(j > 0 && temp < arr[j-1]){
                    arr[j] = arr[j-1];     
                   j--;
                }
                //由于 j-- 了   从 1 --> 0
                arr[j] = temp;
        }
        for(int i = 0;i < arr.length;i++){
               System.out.println(arr[i]);
           }
======================================================================
java特性:1:跨平台。2:纯面向对象语言
面向对象(Object Oriented Programming)OOP    
       (以....的方式 去做事)
       对象:程序中的一个具体的事物,可视可触碰。
什么是面向对象:
        就是当我们遇到一个问题的时候,先不要着急解决问题,先寻找问题域的 ‘对象’;
对象是通过类来构建的;

类是对象的描述(概念)、抽象
对象是类的具体实例。
在Java中如何构建一个类:
  访问修饰符 类名    class {
      //类的首字母要大写
  }
  public class Person{
  
  }
创建对象:
   类 类型  变量名 = new 类名(); 
    Person person= new  Person();
    person.run();
    person.say();
   Java中引用数据类型:数组,类,所有的类都是引用数据类型
==================================================================
 类的结构:5个部分
      1.成员属性(函数)
        根据具体对象来构思有什么属性。
      2.成员方法(行为)也称为普通方法
        (1)无返回值无参数:方法不需要复用,方法运行时,不需要外界的参数
           public void run(){
           
           }
        (2)无返回值有参数:方法不需要复用,方法运行时,需要外界的参数
           public void run(参数列表){
           
        }
        (3)有返回值无参数:方法需要复用,方法运行时,不需要外界的参数
        public 数据类型 buy(){
           return 值;
        }
        (4)有返回值有参数:方法需要复用,方法运行时,需要外界的参数
        public 数据类型 buy(参数列表){
            return 值;
        }
        方法的重载:同一个类中,方法名相同,参数列表不同,
                 不同指的是:参数的个数不同,参数的类型不同,参数的顺序不同
                 这就叫方法的重载,跟返回值无关。
      3.构造方法:
            访问修饰符 类名(参数列表){
            
            }
            在一个类中,构造方法是类的组成部分之一,如果我们不定义,那么系统会给我们默认提供一个无参的构造方法
            public Xxx(){
            }
            在编写类的时候,不管你构造了多少个构造方法,记得留出一个无参的构造方法。
           方法的调用:
               普通方法的调用:
                  public void eat(){
                  system.out.println("jfnsln");
                     sleep();
                  }
                  public void sleep(){
                  system.out.println("fshfvhs");           
                  eat();
                  }                                      (栈溢出)    
                普通方法可以互相调用,但不能相互一起调用,否则会出现StackOverflowError错误
               构造方法的调用:
                   必须是多的调用少的,必须用this();this();必须放在第一行。
                 构造方法可以调用普通方法,普通方法不可以调用构造方法
      4.静态块儿:
            static关键字修饰的 东西,在jvm虚拟机中优先加载,只加载一次
            static可以修饰成员属性--->静态属性
            static可以修饰普通方法--->静态方法
            static可以修饰游离块儿
            static{}
            
            可以直接通过 类名.方法 直接使用, 目的就是为了方便
            静态方法只能加载静态资源
        
        
        
        
      5.游离块儿(构造块儿):
                  {  }
            一个类中 可以有多个静态块儿,多个游离块儿, 会按照顺序以次执行
            但是静态块儿只会加载一次, 游离块儿,new 几次就执行几次
            一个类只要运行了某个方法 ,或属性,就一定会加载静态块儿              
            游离块儿 只有 new 的 才会执行
            静态方法 只能加载静态资源
            非静态方法,也可以静态资源,和 非静态资源
======================================================================
属性的访问器:getter和setter方法。(私有属性时private)
        private String name;
        private int age;
        public Person(){
        }
         public String gerName(){
            return name; 
         }
         public void setName(String name){
            this.name = name;
         }
         public int getAge(){
            return age;
         }
         public void setAge(int age){
            this.age = age;
         }         
========================================================================
高级特性:  
   1.封装:
        快递打包, 让当前物品私密化;
        封装主要就是为了保证 程序的  安全性,并提高程序灵活性和 可拓展性,可维护性
        这样外界,可以简单操作,很方便
        
    jar包; 
        
      过程: 工程鼠标右键,Export  ----> jar 
              jar File ----> 选择存储位置  并给 文件起名字
                执行即可          
      使用jar包:  创建一个工程 ,在工程中 创建 lib 文件夹
                  将jar包复制到其中, 鼠标右键 ,add to Build path
                 
                 这时 你就可以创建一个测试类,使用过jar包中的 工具
==============================================================================
   2.继承:
        增加程序的延展性,减少模板代码的编写
        在Java中通过extends关键字实现继承
        方法的重载 和 方法的重写有什么区别? 
  
 什么是方法的重写? 
   在继承中,方法名相同,参数列表相同(个数, 顺序, 类型必须相同)
   返回值相同(类型相同) ,就是 方法方法的 重写
     
    重载是在 同一个类中,与返回值无关。
    重写是在继承中,返回值相同。

    继承中:  属性  和  方法的 继承        
    在继承中 构造方法 不可以被 继承,因为构造方法
    *** 在java中 不支持多继承,但支持多重继承
 super(); 调用父类的构造方法
 
 在子类中 想要调用父类的 属性和方法 ,需要使用 super.xxx
 
 this 代表当前对象
 this(); 调用当前类的构造器
 
 在Java中任何类都有一个父类 Object类---基类,根类
 如果手动继承了某个类,那么这个类的父类只能是继承的那个类,object类就自动变成了爷爷类。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁李大力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值