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保存的是数组内存中的地址,而不是一个具体的数值,因此称为应用数据类型。
在这里插入图片描述
面向对象的三大特点
面向过程:关注具体步骤,强调步骤
面向对象:不关注具体步骤,强调对象
-
封装
- 将一些信息封装起来,外界不可见
-
继承
- 继承是多态的前提,如果没有继承,就没有多态
- 继承主要解决的是共性抽取的问题
- 继承中的父类也叫基类,派生类;子类也叫派生类
- 继承关系当中的特点:子类可以拥有父类当中的类容;子类还可以拥有自己专有的类容
- 父类、子类成员方法重名的芳名规则:创建的对象是谁就优选访问谁
- 变量重名的访问规则:局部变量直接写;本内中的成员变量:this. ;父类的成员变量: super.
- 设计原则:对于已经投入使用的类,尽量不要进行修改。推荐定义一个新的类,类重复利用其中的共性,并且添加改动新的内容。
- 子类无构造方法会默认调用父类构造方法。在类中调用父类构造方法时只能调用一次,且必须为第一条语句。
- super的三种用法
- 在子类的成员方法中,访问父类的成员变量
- 在子类的成员方法中,访问父类的成员方法
- 在子类的构造方法中,访问父类的构造方法
-
多态
对象的多态性: 一个对象有多种形态
在多态中,成员方法访问的规则是:看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
-
Scanner 从键盘读取数据
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
-
Random类 ,生成随机数
Random r = new Random();
int number = r.nextInt(n); n代表了范围,左闭右开区间,[0,n)
-
ArrayList 大小可变的数据
泛型只能是引用类型,不能是基本类型
常用方法
-
Arrays 此类包含用来操作数组的各种方法
Arrays.sort(arr) 排序
Arrays.tostring(arr) 数据类容转为字符串
Arrays.toCharArray() 字符串转换为字符数组
-
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。
-
静态代码块
执行唯一一次
静态内容总是优先先于非静态内容,所以静态代码块比构造方法先执行。
用途:用来一次性地对静态成员变量进行赋值 -
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(规则)拆分为字符串数组。
-
- 判断方法
-
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接口中的方法
-
共性的方法:
-
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()
: 把集合中的元素,存储到数组中。
-
-
Iterator接口
//使用迭代器 遍历 每个集合对象都有自己的迭代器 Iterator<String> it = coll.iterator(); // 泛型指的是 迭代出 元素的数据类型 while(it.hasNext()){ //判断是否有迭代元素 String s = it.next();//获取迭代出的元素 System.out.println(s); }
-
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。
-
-
-
-
Set接口
java.util.Set
接口和java.util.List
接口一样,同样继承自Collection
接口,它与Collection
接口中的方法基本一致,并没有对Collection
接口进行功能上的扩充,只是比Collection
接口更加严格了。与List
接口不同的是,Set
接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。特点:
-
不允许存储重复的元素
-
没有索引,没有带索引的方法,也不能使用普通的for循环遍历
-
-
HashSet 集合
ava.util.HashSet
是Set
接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。java.util.HashSet
底层的实现其实是一个java.util.HashMap
支持 -
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.Error
与java.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(1-1)