zoukankan      html  css  js  c++  java
  • Java基础学习3

    2020/4/17 Java学习笔记

    数组和常用算法

    • 一维数组
    • 常用算法
    • 多维数组
    • 经典算法
    • 增强for循环与数组

    一维数组的使用方法:

    • 声明数组int []a / int a[];
    • 分配数组内存空间, a = new int[5];
    • 数组赋值 a[0]=8;
    • 处理数据

    二维数组的使用方法:

    int [][]a = new int[2][3];
    int [][]a = {{1,2,3}, {4,5,6}};

    C/C++: int a[5] = {0},申请空间和初始化就一行代码,幸好JAVA有GC机制。。
    JAVA中: int []a = {1, 2, 3};int []b = new int[] {s89, 79, 76};
    默认情况下,整型数组会为每一个元素赋一个初值0。

    常见算法:

    • 求和,求最大最小
    • 数组排序:java.util.Arrays 提供Arrays.sort(数组首地址)函数,达到升序排列的方法
    • 数组复制:System.arraycopy(a1, 0, a2, 0, arr1.length);//将a1的从0开始的arr1.length个数的元素复制到arr2(从0开始)

    经典算法:

    • 冒泡排序
    • 插入排序:检查数组列表中的每个元素,并将其放在已排序元素的适当位置。

    增强for循环:

    for (int temp : arr) { //个人觉得这个更像是迭代器
        System.out.println(temp);
    }
    
    int [][]arr = {{1, 2, 3},{4, 5, 6,},{7, 8, 9} };
    for (int []row : arr) {
        for (int temp : row){
            System.out.println(temp);
        }
    }
    
    

    抽象和封装

    • 面向过程的设计思想
    • 抽象
    • 封装
    • 属性、局部变量/成员属性、变量的作用域
    • 方法
    • 方法调用
    • 方法参数及传递问题
    • this关键字
    • 简单的javabean类

    OOP(Object Oriented Programming)四大特征:

    • 抽象Abstract
    • 封装Encapsulation
    • 继承Inheritance
    • 多态Polymorphism

    JAVA创建类的方式与C++类似:

    public class ClassRoom  {
        String Name;
        int classNum;
        int labNum;
        public String shouKe() {
            return Name + "培训学员"+"
    "+classNum + "教" + labNum
        }
    }
    

    JAVA中对象的创建和使用:

    ClassRoom center = new ClassRoom();
    center.Name = "北京中心"

    JAVA类中定义的属性

    • 常量属性final(感觉类似C++里面的const):它的值只能赋值一次,之后不能更改。
    • 非常量属性就是成员属性,直接定义在类的主体中

    JAVA类中的遍历

    • 成员变量
    • 局部变量:定义在方法里面的变量

    JAVA中的方法(类似C++中类的接口)

    JAVA方法:对对象的执行操作叫方法

    JAVA只有构造方法(构造函数)没有析构函数(GC机制)

    JAVA调用方法的参数是对象时传递是地址。

    this关键字:与C++类似,this始终指向调用这个方法的对象

    • 为了避免参数的作用范围覆盖了成员变量的作用范围,必须明确的使用this关键字来指定。
    • 如果某个构造方法的第一条语句具有形式this(..),那么这个构造方法将调用本类中的其它购物方法。
    public Employee1(String name,int age){
    
    }
    public Employee2() {
        this("犀浦余文乐", 21);
    }
    

    JavaBean

    JavaBean:符合如下标准的java类:

    • 有一个无参的公共构造方法
    • 有属性
    • 属性有对应的get、set存取方法

    为了解决管理一个大型软件系统中数目众多的类,解决类命名冲突的问题,java引入了包(package)

    包的作用:

    • 允许类组成较小的单元(类似文件夹), 易于找到使用相应的文件。
    • 更好的保护类数据和方法
    • 防止命名冲突

    如何创建包:

    package java.shan.chapter5;//声明一个包

    • 创建包用package关键字.
    • 包的声明要写在源代码的第一行
    • 包的名称一般为小写,而且要有意义

    编译生成包:

    编译时不能直接用java.exe编译,要带上"-d"这个参数来编译。
    (1) 在当前目录下生成包java -d Employee2.java
    (2) 在指定的目录下生成包:java -d D:share Employee.java

    运行一个带包的类: java 包名.类名

    使用带包的类

    import 关键字导入这个类 (此处特别像python的第三方库引入模块的语法)

    import 包名.类名;
    import java.util
    import java.lang

    JDK中常用包的介绍

    • java.lang:包含一些JAVA语言的核心类,如String、Math、Integer、System和Thread提供常用功能。因为常用所以默认导入可以直接使用
    • java.util: 包含一些实用的工具类, 如定义系统特性、日期时间、日历、集合类等。
    • jaba.io: 包含能提供多种输入输出的流类
    • java.net: 包含执行网络相关的操作的类
    • java.sql: Java操作数据库的API
    • java.text: 包含一些用来处理文本、日期、数字和消息的类和接口
    • java.awt: 包含构成抽象窗口工具集的多个类,这些类被用来构建和管理应用程序的图形界面(GUI)
    • java.swing: 包含了构成“轻量级”窗口的组件。

    JAVA中的继承和多态:

    • 继承Inheritance
    • 多态Polymorphism
    • 访问修饰符
    • static关键字
    • final关键字
    • abstract关键字
    • 接口

    Java的继承实现:

    class Manager extends Employee { //经理类继承自员工类
    
    }
    

    super关键字:指向父类对象的引用,用于初始化父类的属性和调用父类的方法

    调用父类构造方法的语法:

    super() 或 super(实参列表);//必须是第一句

    调用父类的普通方法的语法为:

    super.methodname() 或 super.methondname(实参列表)

    Object类:

    Java类的祖先类是java.lang.Object类。这是所有类的父类
    没有extends指定父类默认是Object类。

    Object类中几个实用方法:

    • toString():返回代表该对象值的字符串。Object类中返回的字符串形式是"类名@内存地址的十六进制整数值."
    • equals(Object obj):测试其它某个对象是否与此对象“相等”,具体是实现是通过判断两个对象是否指向同一块内存区域来判断的。
    • hashCode():返回该对象的哈希码值, 重写equals()方法时,可以页重写hashCode(),可以用于判断两个对象是否为相同的对象,可以结合使用
    • Clas<?> getClass(): 返回此对象运行时的类。
    • clone(): 克隆一个对象,创建并返回此对象的一个副本

    Java中多态的实现:

    1. 方法重载overloading
    2. 方法重写override

    类型转换、向上转型和向下转型

    1. 父类的变量可以指向其子类的对象: Father son=new Son();小的数据可以赋值给大的数据,反过来却不行
    2. 父类变量显然不能访问其子类对象的新成员
    3. 可以使用 a instanceof Cat//返回值为boolean来判断该变量指向的对象是否属于该类。即判断子类是否是相应父类的子类
    • 向上转型可以直接使用 double a = b;//b is int
    • 向下转型不能直接使用需要强制转换int b; b = (int)a;

    动态绑定

    动态绑定也叫延迟绑定,指的是在执行期间而不是编译时编译所引用的对象的实际类型,根据其实际类型调用其相应的方法。
    发生的条件:

    • 要有继承
    • 要有重写
    • 要有父类变量指向子类对象
    • 要有父类变量调用重写的方法
  • 相关阅读:
    允许debian wheezy支持IOS7+的iphone.
    openSUSE 国内镜像摘要
    策略模式总结
    顺序串
    WindowState注意事项
    NLP | 自然语言处理
    Using Autorelease Pool Blocks
    NSAutoreleasePool & thread
    oc语言特性
    oc语言基础整理
  • 原文地址:https://www.cnblogs.com/DengSchoo/p/12722700.html
Copyright © 2011-2022 走看看