欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java基础(1)—1

程序员文章站 2024-01-28 17:07:04
...

运算符

自增运算符

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

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

三元运算符

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

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

循环

for 循环

java基础(1)—1

do … while循环

java基础(1)—1

方法重载

方法名相同参数不同

数据

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 大小可变的数据

    泛型只能是引用类型,不能是基本类型
    java基础(1)—1

​ 常用方法

java基础(1)—1

  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基础(1)—1

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,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理

相关标签: Java