Java Final Review

MD 期末这么快就到了 把Java学过的内容 特别是小细节总结下


语言基础

常见关键字

命名规范

A~Z a~z $ 汉字 _组成

开头不可以是数字

数据类型

类型 名字 字节
整型 byte 单字节 字节整型
short 2字节 短整型
int 4字节 普通整型
long 8字节 长整型
字符型 char
浮点型 float 4字节 单精度浮点型
默认小数为double类型 float需在数据后面用f声明
double 8字节 单精度浮点型
布尔型 boolean

两个int类型的数据相除\取余 取结果的整数\余数部分 不进行四舍五入 直接丢弃

类型 占用字节数 取值范围
byte 1 -27 ~ (-27-1)
short 2 -215 ~ (2151)
int 4 -231 ~ (231-1)
long 8 -263 ~ (263-1)

基本数据类型之间的转换规则

1.类型转换顺序

1)只要两个操作数中有一个是double类型的 另一个将会被转换成double类型,并且结果也是double类型

2)只要两个操作数中有一个是float类型的 另一个将会被转换成float类型,并且结果也是float类型

3)只要两个操作数中有一个是long类型的 另一个将会被转换成long类型,并且结果也是long类型

4)两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型

  1. 如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,再做其它类型的自动转换。

  2. 对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换

short i=99 ;
char c=(char)i;
System.out.println("output:"+c);
  1. 不能在布尔值和任何数字类型间强制类型转换

  2. 不同级别数据类型间的强制转换,可能会导致溢出或精度的下降

  3. 当字节类型变量参与运算 Java作自动数据运算类型的提升,将其转换为int类型。例如:

byte b;
b=3;
b=(byte)(b*3);  //必须声明byte
类型 字节 范围 字位数
float 4 -3.402823×1038~3.402823×1038 6
double 8 -1.797693×10308~1.797693×10308 15

Java中存储char字符采用的是Unicode

运算符: a++ 先运用再计算 ++a 先计算再运用

转义字符 含义
\b 退格
\n 换行
\r 回车
\w 十六进制数
\t 水平制表符
\\ 反斜杠
转换符 说明
%s 字符串类型
%c 字符类型
%b 布尔类型
%d 整数类型 十进制
%x 整数类型 十六进制
%o 整数类型 八进制
%f 浮点类型
%a 十六进制浮点类型
%e 指数类型
%g 通用浮点类型
%n 换行符
标志 说明
+ 正/负数 添加符号
- 左对齐
0 补0
, 分组
( 括号包括负数 去掉负号

控制流程语句

switch

switch(judge){
   case 1 : break;
   default : break;
}

judege :

不可以是 long float double boolean

case :

后面接常量表达式

如果不加break; 会自动执行完后面所有的case和default 直到执行完或者遇到break;为止


do while

do {循环体}
while(){}

循环体至少执行一次

break continue

通过label 可以指定循环结构体

Nice:
for (){}
while(){continue Nice; break Nice;}

查找 排序

顺序查找

二分查找

需要已经排序好数组

先找中间 如果正确则结束

与中间值的大小进行比较 递归 前 / 后 子数组

     /*
     * 默认升序排列好
     */
    public static boolean binarySearch(int[] nums,int start,int end,int num){
        int middle = (start + end )/2;
        if (num == nums[middle]){
            return true;
        }
        if (num > nums[middle]){
            return binarySearch(nums,middle+1,end,num);
        }else {
            return binarySearch(nums,start,middle-1,num);
        }
    }

选择排序

先找最小 放到开头

找第n小的数 与第n位的数交换

int minIndex;
        for (int i = 0; i < nums.length; i++) {
            minIndex = i;
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[j] < nums[minIndex]){
                    minIndex = j;
                }
            }
            if (minIndex != i){
                // swap num
                int temp = nums[i];
                nums[i] = nums[minIndex];
                nums[minIndex] = temp;
            }
        }
    }

冒泡排序

从n=0开始 每相邻的两个数比较大小进行交换

n=1 …..

for (int i = 0; i < nums.length ; i++){
   for (int j=0 ; j <nums.length ; j++){
      if (nums[j] > nums[j+1]){
         // swap
         int temp = nums[j];
         nums[j] = nums[j+1];
         nums[j+1] = temp;
      }
   }
}

类与对象

创建

类名 对象变量名 = new 类名();
Shuai wo = new Shuai();

方法重载

方法重写

方法名 参数列表 返回值类型 修饰符 定义位置
重载 Overload 相同 不同(个数或对应类型) 无关 无关 同一个类
重写 Override 相同 相同 相同 访问权限不小于被重写方法 子父类中

static

静态方法内部只能使用静态的成员变量 不能访问类的非静态成员

访问不需要创建对象就可以直接调用

类的继承

public class Apple extends Fruit{}

覆盖父类方法

覆盖要求 方法名称 返回值的类型 传入参数的个数和类型完全一致

重载父类方法

super

Java中 子类的构造方法必须以一定方式调用父类的构造方法

若默认不进行调用 则编译器会自动调用父类的无参构造方法

访问权限修饰符(public/private/default/protected)

本类 本包 子类 其他类
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y

private : 强调给自己使用 属性

默认 : 强调给同包下的来使用

protected : 强调给子类使用 会被子类继承的方法

public : 强调给大家使用 方法

abstract 抽象

public abstract String getType(){}
abstract class Name{}

如果一个类中包含抽象方法 则该类必须是抽象类

抽象类不能被实例化 一般作为其他类的父类

interface 接口

public interface InterfaceName extends FatherInterface{}

修饰符可以是public 也可是 空缺

接口体中的变量只能定义为staticfinal

如果一个接口是从别的一个或多个父接口中继承而来,则在类体中必须加入实现该接口及其父接口中所有方法的代码

在实现一个接口时 类中对方法的定义要和接口中的相应的方法的定义相匹配,其方法名 方法的返回值类型 方法的访问权限和参数的数目与类型信息要一致

可以实现多个接口

final 类

final

类不能有子类

方法不能被重载

构造方法

构造方法

Constructor 是一种特殊的方法

每个类都有这种构造方法

特点

方法名与类名相同

没有返回类型 包括void也没有


重要例子

欧几里得求解gcd

递归

public static int solveGcd(int max, int min){
   if (min == 0){
      return max;
   }
   return solveGcd(min , max % min);
}

迭代

public static int solveGcd(int max , int min){
   while(min != 0){
      int temp = min;
      min = max % min;
      max = temp;
   }
   return max;
}


Codes   大学   Learning Java
本文作者:Ge15emium
版权声明:本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!