JavaSE第一部分

Java基础语法

1、变量类型及其占用字节数

类型占用存储空间/字节表数范围说明使用场景举例
byte1字节 = 8 bit-128 ~ +127
short2-2 15 ~215 -1
int4同理
long82的(8*8-1)次方后面必须加一个L,如Long num = 12313112LUUID、序列号、MD5密码、雪花算法主键
float4
double8
char2

2、运算符

运算作用示例说明
instanceof检查A是否是类B或类B的子类的对象A instanceof B返回true或false
“&”和“&&”逻辑与单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”逻辑或同理,
^逻辑异或异或,追求的是“异”,当左右相同时,结果为false
三元运算符(条件表达式)?表达式1:表达式2;当条件表达式的值为true,执行表达式1;为false,执行表达式2。

3、数组

数组算法

基本会冒泡会快速排序就OK了

Arrays工具类的使用:java.util.Arrays

说明方法作用
判断两个数组长度和值是否相等boolean equals(int[] a,int[] b)判断两个数组是否相等。
将数组转换成String类型输出的String toString(int[] a)输出数组信息。
这个方法感觉用户不大啊void fill(int[] a,int fromIndex, int toIndex,int val)将值val分配给数组的指定范围的每个元素;当无 int fromIndex, int toIndex这两个参数时,替换整个数组
快速排序void sort(int[] a)对数组进行排序。
二分查找int binarySearch(int[] a,int key)对排序后的数组进行二分法检索指定的值。

数组常见异常

  • 数组脚标越界异常(ArrayIndexOutOfBoundsException)

  • 空指针异常(NullPointerException)。

4、面向对象

1、匿名对象

如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。 我们经常将匿名对象作为实参传递给一个方法调用。

我们也不定义对象的变量引用,而是直接调用这个对象的方法。这样的对象叫做匿名对象。

如:new Person().shout();

关于匿名对象的生命周期:仅仅使用一次就不能再使用了;当然,当他作为一个方法参数时,在方法体内部还能多次使用。

2、Java方法的参数传递

Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本 (复制品)传入方法内,而参数本身不受影响。

形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参;

形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

3、常用关键字

  • static:静态的,可修饰方法、属性,修饰方法时,方法里面调用的方法和属性也应该是静态的。

一个有趣的题目:

 public static void main(String[] args) {
         int a = 10;
         int b = 10;
         method(a,b);//要求method方法调用后仅打印出a=100,b=100,请实现method方法
         System.out.println("a="+a);
         System.out.println("b="+b);
     }
 //题目看似在考查方法的参数传递,但是仔细观察会发现,这题压根不能按照正常的情况解决
 //所以正确解答是:
 public static void method(int a,int b){
         System.out.println("a=100");
         System.out.println("b=100");
         System.exit(0);//直接让程序退出执行
     }

4、四种权限修饰符

修饰符类内部同一个包不同包的子类整个工程/module
privateYes
缺省YesYes
protectedYesYesYes
publicYesYesYesYes

其中,对于class的权限修饰只可以用public和default(缺省);protected是不同包的子类才能访问

5、关于类的构造器与继承关系

  • 当类中未显示声明构造器时,系统会默认提供一个无参构造器,当声明构造器后这个默认构造器就失效了(其实是方法的重写)

  • Java中所有的类(除了枚举类)都直接或间接的继承object类,object类提供了一个无参构造器。

6、多态性

  • 编译时:要查看引用变量所声明的类中是否有所调用的方法;运行时:调用实际new的对象所属的类中的重写方法;

  • 属性无多态性;

  • 多态是运行时行为,因为只有真正运行时才知道new的是哪个类对象。

7、对象类型转换

  • 从子类到父类的类型转换可以自动进行,因为父类有的子类都有

  • 从父类到子类的类型转换必须通过造型(强制类型转换)实现,因为子类有的父类不一定有

  • 无继承关系的引用类型间的转换是非法的

  • 在造型前可以使用instanceof操作符测试一个对象的类型

8、object类

  • Object类是所有Java类的根父类

  • 如果在类的声明中未使用extends关键字指明其父类,则默认父类 为java.lang.Object类

Object类的主要结构:一般这几个方法都要重写

方法名称描述
public Object()构造器
public boolean equals(Object obj)对象比较
public int hashCode()获取对象Hash码
public String toString()对象转化为字符串打印

9、equals和==的区别:

  • == 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址;

  • equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点;

  • 具体要看自定义类里有没有重写Object的equals方法来判断;

  • 4 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

10、基本类型、包装类与String类间的转换

  • 自动拆箱与自动装箱可以自动完成基本类型与包装类的相互转换。

  • 调用包装类的.xxxValue(String str)方法,返回值就是相应的基本类型;

  • 调用字符串重载的valueOf(基本数据类型)方法,返回值类型就是String

11、抽象类与抽象方法

  • 用abstract关键字来修饰一个类,这个类叫做抽象类;

  • 用abstract来修饰一个方法,该方法叫做抽象方法。

  • 抽象方法:只有方法的声明,没有方法的实现。以分号结束: 比如:public abstract void talk();

  • 含有抽象方法的类必须被声明为抽象类;

  • 抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重 写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类;

  • abstract只能用来修饰类和方法。

12、final关键字

  • final标记的方法不能被子类重写;

  • final标记的类不能被继承;

  • final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只 能被赋值一次;

13、接口interface

  • 一个类可以实现多个接口,接口也可以继承其它接口;

  • 接口的主要用途就是被实现类实现;

  • 接口中的所有抽象方法和成员变量都默认是由public abstract修饰的。

  • 接口中没有构造器

5、异常处理

两种异常处理方式

  • try-catch-finally:不论在try代码块中是否发生了异常事件,catch语句是否执 行,catch语句是否有异常,catch语句中是否有return, finally块中的语句都会被执行;finally语句和catch语句是可选的;

  • 在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。

异常类的两个常用方法

  • getMessage() 获取异常信息,返回字符串;

  • printStackTrace() 获取异常类名和异常信息,以及异常出 现在程序中的位置。返回值void;

  • 一般是在catch语句中使用:

 //异常类方法
 try{
     
 }catch(Exception e){//当匹配到这个异常类时执行该catch语句
     e.getMessage();
 }

用户自定义异常

要求:

  • 一般地,用户自定义异常类都是RuntimeException的子类;

  • 自定义异常类通常需要编写几个重载的构造器;

  • 自定义异常需要提供serialVersionUID;

  • 自定义的异常通过throw抛出,不是throws!!!;

  • 自定义异常最重要的是异常类的名字,当异常出现时,可以根据名字判断异常类型。

示例如下:

 //用户自定义异常类MyException,用于描述数据取值范围错误信息。用户
 //自己的异常类必须继承现有的异常类。
 class MyException extends Exception {
 static final long serialVersionUID = 13465653435L;
 private int idnumber;
 public MyException(String message, int id) {
     super(message);
     this.idnumber = id;
 }
 public int getId() {
 return idnumber;
 }
 }
 //可以定义一个测试类如下:
 public void manager() {
 try {
 regist(100);
 } catch (MyException e) {
     System.out.print("登记失败,出错种类" + e.getId());//调用getId方法
     System.out.print(e.getMessage("登记失败"));//这里调用的就与构造器方法
 }
 System.out.print("本次登记操作结束");
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值