【Java学习】

❶基础

一、注释

  • 单行注释 //

  • 多行注释 /* */

  • 文档注释 /** */ javadoc生成帮助文档

二、标识符和关键字

1.标识符:由字母、数字、下划线、$组成,并且首字符不能以数字开头。

2.关键字:由Java事先定义好的,有特殊含义的标识符。

三、Java的数据类型

强类型语言:要求变量使用严格符合规定,所有变量必须先定义后使用。

四、类型转换

  • 因为Java是强类型语言,所以不同数据类型进行运算时,需要进行数据类型转换

  • 运算中,不同类型的数据需要先转化为同一类型,然后进行计算

  • 强制类型转换:由高到低转换;需要避免内存溢出

  • 自动类型转换:由低到高转换

    以下类型的优先级由低到高,小数的优先级要大于整数
    byte,short,char-->int-->long-->float-->double

五、变量和常量

  • 变量是可以变化的量

  • Java是一种强类型语言,每个变量都必须要声明其类型

  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域 数据类型 变量名 = 值;// 可以使用逗号隔开来声明多个同类型变量

变量的命名规范

  • 变量名、方法名、类名:见名知意

  • 类变量:首字母小写和驼峰原则

  • 局部变量:首字母小写和驼峰原则

  • 类名:首字母大写和驼峰原则

  • 方法名:首字母小写和驼峰原则

  • 常量名:大写字母和下划线,MAX_VALUE

常量

  • 常量初始化后不能再改变值

  • 常量可以理解为一种特殊的变量,常量的值被设置后,在程序运行过程中不允许被改变

  • 常量定义:final 常量类型 常量名 = 值;(定义常量时就要进行初始化赋值)

  • 常量名一般使用大写字符

六、运算符

  • 算术运算符:=,-,*,/,%(取余),++(自增),—(自减)

  • 赋值运算符:=

  • 关系运算符:>,<,**,!=,instanceof

  • 逻辑运算符:&&(与),||(或),!(非)

  • 位运算符:&(与),|(或),~(非),^(异或),>>(右移),<<(左移),>>>

  • 条件运算符:?:(三元运算符)

  • 扩展赋值运算符:+=,-=,*=,/=

七、包机制

  • 为了更好的组织类,Java提供包机制,用于区别类名的命名空间;包语法用package

  • 一般使用公司的域名倒置作为包名

  • 在Java程序中导入包,用import语句

八、JavaDoc

  • javadoc命令是用来生成自己API文档

  • 参数信息 @author:作者名 @version:版本号 @since:指明需要最早使用的jdk版本 @param:参数名 @return:返回值情况 @throws:异常抛出情况


❷流程控制

一、用户交互Scanner

  • 基本语法Scanner s = new Scanner(System.in);

  • 通过Scanner类的next()和nextLine()方法获取输入的字符串,在读取前可以使用hasNext()和hasNextLine()判断是否还有输入的数据。

二、顺序结构

  • Java的基本结构

三、选择结构

1. if选择结构

  • if单选择结构

    if(flag){
    
    }
  • if双选择结构

    if(flag){
    
    }else{
    
    }
  • if多选择结构

    if(flag01){
    
    }else if(flag02){
    
    }else if(flag03){
    
    }else{
    
    }

2. switch多选择结构

  • switch(expression){  
        case value:    
            语句     
            break;// 可选 
        case value:  
            语句     
            break;// 可选 
        default:// 可选    
            语句
    }

三、循环结构

1. while循环

while(布尔表达式){

    // 循环内容
}

2. do…while循环

do{  

    // 语句
}while(布尔表达式);

3. for循环

for(初始化;布尔表达式;迭代){  

    // 语句
}
// for循环的死循环写法
for(;;){
    
}
 

四、break,continue

1. break

  • break可以在任何循环语句的主体部门使用,用于控制循环的流程。

  • break用于强行退出循环,不执行循环中剩下的语句。(break语句也在switch语句中使用)。

2. continue

  • continue语句用在循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。


❸方法

一、方法的定义

修饰符 返回值类型 方法名(参数类型 参数名){  
    ...   
    方法体  
    ...    
    return 返回值;
}

二、方法的调用

  • 调用方法:对象名.方法名(实参列表);

  • 当方法返回一个值的时候,方法调用通常被当作一个值。

  • 当方法的返回值是void时,方法调用一定是一条语句。

三、方法的重载

重载就是在同一个类中,有相同方法名称,但形式参数不同的方法。

1. 方法重载的规则

  • 方法名称必须相同。

  • 参数列表必须不同(参数个数不同,或参数类型不同,或参数排列顺序不同)

  • 方法的返回类型可以相同也可以不同。

  • 仅仅返回类型不同不能成为方法的重载。

四、递归

public class Test02 {   
    // 递归例子:阶乘 5!   
    public static void main(String[] args) {    
        int f = f(5);    
        System.out.println(f);  
    }  
    
    public static int f(int n) {    
        if (n == 1) {// 递归头    
            return 1;     
        } else {// 递归体   
            return n * f(n - 1);     
        }   
    }
}

❹数组

一、数组的概念

  • 数组是相同类型数据的有序集合

二、数组的声明创建

  • 首先必须声明数组变量,才能在程序中使用数组

    // 声明数组变量的语法: 
    dataType[] arrayRefVar;// 首选的方法 
    //或 
    dataType arrayRefVar[];// 效果相同,但并不首选
  • Java语言使用new操作符来创建数组

    dataType[] arrayRefVar = new dataType[arraySize];

三、数组的三种初始化

  • 静态初始化

    int[] a = {1,2,3};
  • 动态初始化

      int[] a= new int[2];
      a[0] = 1; 
      a[1] = 2;

四、多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。

  • 二位数组。

    int a[][] = new int[2][5]

❺面向对象

一、类与对象

1. 类与对象的关系

  • 类是一种抽象的概念,它是对某一类事物整体的描述/定义,但是它并不能代表某一个具体的事物

  • 对象是抽象概念的具体实

2. 创建和初始化对象

  • 使用new关键字创建对象时,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。

3. 构造器

特点

  • 必须和类的名字相同

  • 必须没有返回类型,也不能写void

作用

  • new的本质是在调用构造方法。(类默认会有一个隐式的无参构造)

  • 初始化对象的值(可以定义有参构造初始化对象的属性值)。

二、Java三大特性

1. 封装

  • 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量得方法给外部使用。

2. 继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。

  • extends的意思是扩展。子类是父类的扩展。

  • Java中类只有单继承,没有多继承,但是类可以多重继承。

  • 继承是类与类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

  • 子类和父类之间,从意义上讲应该有“is a”的关系。

  • 子类继承父类就会拥有父类的全部方法。(私有方法除外)

Object类

  • object类是所有类的基类。

  • 所有的类都默认直接或者间接继承Object类。

super关键字

  1. super调用父类的构造方法,必须在构造方法的第一个。

  2. super必须只能出现在子类的方法或者子类的构造方法中。

  3. super和this不能同时调用构造方法,因为他们调用构造方法时都要求放在构造方法第一行。

  4. new对象时,首先执行父类的构造方法。

super和this的比较

  1. this();调用本类的构造方法
  2. super();调用父类的构造方法

3. 多态

  • 重写都是方法的重写,和属性无关。

  • 需要有继承关系,子类重写父类的方法。

  • 方法名必须相同; 参数列表也必须相同。

重写的作用

  • 父类的功能,子类不一定需要,或者不一定满足。

方法重写的注意点

  • 静态方法:方法的调用只和左边变量有关,和定义的数据类型无关。

    // B是A的父类,A类和B类都有静态方法test(); 
    B b = new A() 
    b.test();// 调用父类的test()
  • 非静态方法才是重写。

  • 子类的对象指向父类的引用时,子类和父类都有同一个方法,则子类重写了父类的方法,则会调用子类的方法。

    (对象能执行哪些方法,主要是看左边的类型,和右边的关系不大)

    // B是A的父类,A类和B类都有方法test(); 
    B b = new A();// 子类的对象指向父类的引用 
    b.test();// 子类重写父类的方法,则调用子类的test()。
  • 子类A可以调用自己的或者继承父类的方法。

  • 父类B可以指向子类,但是不能调用子类独有的方法。

  • 父类B调用子类A独有的方法时可以进行对象强制类型转换。

三、抽象类

  • abstract关键字修饰的类是抽象类。

  • 抽象方法必须放在抽象类中。

  • 抽象类不能new,只能靠子类去实现。

  • 抽象类的局限性是Java只能单继承。


  • ❻异常处理

    一、异常的体系结构

    1.简单的分类

  • 检查性异常:由用户错误等问题引起的异常,程序员无法预见。比如:打开一个不存在的文件,一个异常就发生了,这些异常不能在编译时被忽略。(在idea工具中会有红色标注的异常)

  • 运行时异常:程序员可避免的异常。与检查性异常相反,可以在编译时被忽略。(运行时报错)

  • error是灾难性的致命错误,是程序无法控制和处理的。当出现这些错误时,程序一般会选择终止线程。

  • exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这类异常。

  • 二、Java异常的处理机制

  • try:监控代码区域

  • catch:捕获异常

  • finally:处理善后工作,比如:关闭资源,关闭IO流。finally最终都会执行

  • throw:一般在方法中使用,主动抛出异常

  • throws:用在方法上,把异常向上抛出,抛给方法调用者去处理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值