java基础(1)—1

运算符

自增运算符

b = ++a; 先将a加1赋值给b

b = a++; 先将a赋值给b,再加1

三元运算符

数据类型 变量名 = 布尔类型表达式?结果1:结果2

尔类型表达式结果是 true,三元运算符整体结果为结果1,赋值给变量,否则为结果2。

循环

for 循环

在这里插入图片描述

do … while循环

在这里插入图片描述

方法重载

方法名相同参数不同

数据

Int a = int[3];

创建数据,jvm在堆内存中开辟空间,存储数组;数组在内存中会有自己的内存地址,以十六进制数表示;jvm将数组的内存地址复制给应用类型变量a;变量a保存的是数组内存中的地址,而不是一个具体的数值,因此称为应用数据类型。

在这里插入图片描述

面向对象的三大特点

面向过程:关注具体步骤,强调步骤
面向对象:不关注具体步骤,强调对象

  1. 封装

    • 将一些信息封装起来,外界不可见
  2. 继承

    • 继承是多态的前提,如果没有继承,就没有多态
    • 继承主要解决的是共性抽取的问题
    • 继承中的父类也叫基类,派生类;子类也叫派生类
    • 继承关系当中的特点:子类可以拥有父类当中的类容;子类还可以拥有自己专有的类容
    • 父类、子类成员方法重名的芳名规则:创建的对象是谁就优选访问谁
    • 变量重名的访问规则:局部变量直接写;本内中的成员变量:this. ;父类的成员变量: super.
    • 设计原则:对于已经投入使用的类,尽量不要进行修改。推荐定义一个新的类,类重复利用其中的共性,并且添加改动新的内容。
    • 子类无构造方法会默认调用父类构造方法。在类中调用父类构造方法时只能调用一次,且必须为第一条语句。
    • super的三种用法
      • 在子类的成员方法中,访问父类的成员变量
      • 在子类的成员方法中,访问父类的成员方法
      • 在子类的构造方法中,访问父类的构造方法
  3. 多态

    对象的多态性: 一个对象有多种形态

    在多态中,成员方法访问的规则是:看newd的是谁,就有选用谁,没有则向上找

    口诀:编译看左边,运行看右边。

    • 在代码中体现多态性,其实就一句话:父类引用指向子类对象

    格式:
    父类名称 对象名 = new 子类名称();
    或者
    接口名称 对象名 = new 实现类名称();

    Fu obj = new Zi();
    

    好处:

    无论右边new的时候缓存哪个子类对象,等号左边调用的方法都不会变化

    • instanceof 判断类名称

      // 对象 instanceof 类名称
      animal instanceof dog;  // 判断animal本来是不是dog
      

接口

接口就是一种公共的规范标准。编译后的字节码文件仍然为 .class

接口中可以有的内容:

  • 常量,
  • 必须使用 public static final 修饰,也可以省略
  • 接口中的常量必须进行赋值,不能不赋值
  • 接口中的常量的名称,使用完全大写的字母,用下划线进行分割
  • 抽象方法
    • public abstract 返回值类型 方法名称(参数列表);public abstract可以省略
    • 实现类格式: public class 实现类名称 implements 接口名称{};实现类中必须重写接口中的所有方法

一个标准的类

通常包括下面四个构造方法

1. 所有的成员变量都要使用private关键字修饰

2. 为每一个成员变量编写一对儿Getter/Setter方法

3. 编写一个无参数的构造方法

4. 编写一个全参数的构造方法

这样标准的类也叫做Java Bean

Java常用api

  1. Scanner 从键盘读取数据

    Scanner sc = new Scanner(System.in);

    int a = sc.nextInt();

  2. Random类 ,生成随机数

    Random r = new Random();

    int number = r.nextInt(n); n代表了范围,左闭右开区间,[0,n)

  3. ArrayList 大小可变的数据

    泛型只能是引用类型,不能是基本类型
    在这里插入图片描述

​ 常用方法

在这里插入图片描述

  1. Arrays 此类包含用来操作数组的各种方法

    Arrays.sort(arr) 排序

    Arrays.tostring(arr) 数据类容转为字符串

    Arrays.toCharArray() 字符串转换为字符数组

  2. 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

  3. 静态代码块
    执行唯一一次
    静态内容总是优先先于非静态内容,所以静态代码块比构造方法先执行。
    用途:用来一次性地对静态成员变量进行赋值

  4. String

    • 判断方法
      • pubic boolean queals(Object anObject):将字符串与指定对象进行比较
      • pubic boolean quealsIgnoreCase(String anotherString):将字符串与指定对象进行比较,忽略大小写
    • 获取功能的方法
      • public int length () :返回此字符串的长度。
      • public String concat (String str) :将指定的字符串连接到该字符串的末尾。
      • public char charAt (int index) :返回指定索引处的 char值。
      • public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
      • public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
      • public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
    • 转换功能的方法
      • public char[] toCharArray () :将此字符串转换为新的字符数组。
      • public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
      • public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。
    • 分割功能的方法
      • public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
  5. Objects

    JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

    在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。方法如下:

    • public static boolean equals(Object a, Object b):判断两个对象是否相

    • 源码如下

      public static boolean equals(Object a, Object b) {  
          return (a == b) || (a != null && a.equals(b));  
      }
      

集合

在这里插入图片描述

java.util.Collection接口

​ 所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法

​ 任意的单列集合都可以使用Collection接口中的方法

  1. 共性的方法:

    • public boolean add(E e): 把给定的对象添加到当前集合中 。
    • public void clear() :清空集合中所有的元素。
    • public boolean remove(E e): 把给定的对象在当前集合中删除。
    • public boolean contains(E e): 判断当前集合中是否包含给定的对象。
    • public boolean isEmpty(): 判断当前集合是否为空。
    • public int size(): 返回集合中元素的个数。
    • public Object[] toArray(): 把集合中的元素,存储到数组中。
  2. Iterator接口

    //使用迭代器 遍历   每个集合对象都有自己的迭代器
            Iterator<String> it = coll.iterator();
            //  泛型指的是 迭代出 元素的数据类型
            while(it.hasNext()){ //判断是否有迭代元素
                String s = it.next();//获取迭代出的元素
                System.out.println(s);
            }
    
    
  3. List接口.

    • 有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)

    • 有索引,包含了一些带索引的方法

    • 允许存储重复的元素

    • List接口中带索引的方法(特有)

      • public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。

      • public E get(int index):返回集合中指定位置的元素。

      • public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。

      • public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

        注意:

        ​ 操作索引的时候,一定要防止索引越界异常

        ​ IndexOutOfBoundsException:索引越界异常,集合会报

        ​ ArrayIndexOutOfBoundsException:数组索引越界异常

        ​ StringIndexOutOfBoundsException:字符串索引越界异常

    • 创建List集合对象,使用多态

        List<String> list = new ArrayList<>();
      

      java.util.ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。单线程

    • LinkedList集合

      • java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。

      • LinkedList集合的特点: 多线程

      • 常用方法

        • public void addFirst(E e):将指定元素插入此列表的开头。
        • public void addLast(E e):将指定元素添加到此列表的结尾。
        • public E getFirst():返回此列表的第一个元素。
        • public E getLast():返回此列表的最后一个元素。
        • public E removeFirst():移除并返回此列表的第一个元素。
        • public E removeLast():移除并返回此列表的最后一个元素。
        • public E pop():从此列表所表示的堆栈处弹出一个元素。
        • public void push(E e):将元素推入此列表所表示的堆栈。
        • public boolean isEmpty():如果列表不包含元素,则返回true。
  4. Set接口

    java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。

    特点:

    1. 不允许存储重复的元素

    2. 没有索引,没有带索引的方法,也不能使用普通的for循环遍历

  5. HashSet 集合

    ava.util.HashSetSet接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。java.util.HashSet底层的实现其实是一个java.util.HashMap支持

  6. Collections

    • java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
    • public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。
    • public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。
    • public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。
    • public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。

异常

指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Errorjava.lang.Exception,平常所说的异常指java.lang.Exception

Throwable体系:**

* Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。

* Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎

Throwable中的常用方法:

  • public void printStackTrace():打印异常的详细信息。

包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。

  • public String getMessage():获取发生异常的原因。

提示给用户的时候,就提示错误原因。

  • public String toString():获取异常的类型和异常描述信息(不用)。

异常处理:
Java异常处理的五个关键字:try、catch、finally、throw、throws

声明异常throws : 遇到异常时,中断程序
声明异常:将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲解该方式),那么必须通过throws进行声明,让调用者去处理。

try-catch的方式就是捕获异常。

  • 捕获异常:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。
    finally:有一些特定的代码无论异常是否发生,都需要执行。

父类抛出异常,子类重写父类方法时,抛出的异常只能是个父类异常的子类,一般父类、子类异常相同。

编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。

运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范…这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。

错误: 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值