初识JavaSE

初识JavaSE

一、基础语法

注释

  1. 行内注释//

  2. 多行注释/**/

  3. 文档注释/** */

    javadoc生成帮助文档

标识符

注:所有标识符应该以字母、美元符、下划线开始,标识符大小写是敏感的、标识符可以使用中文命名,但不建议。

  • 关键字
abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

注:String不是关键字,是类。

数据类型

  1. 基本数据类型
  • 整数

    byte(占一个字节)、short(占两个字节)、int(占四个字节)(默认)、long(占八个字节)

    注:long类型要在数字后面加个L,作为区分。

  • 浮点数

    float(占四个字节)、double(占八个字节)(默认)

    注:float类型要在数字后面加个F,作为区分。尽可能少的使用浮点数进行比较,必要时可以用BigDecimal数学工具类。

  • 字符

    char(占两个字节)、ASCII、UTF-8、Unicode

    注:所有字符char的本质还是数字。

  • 布尔值

    boolean(一位):true、false

  1. 引用数据类型
  • 接口
  • 数组
  1. 数据类型扩展
  • 二进制:0b
  • 八进制:0
  • 十六进制:0x

类型转换

注:数据类型由低到高的排序是:byte,short,char—>int—>long—>float—>double。不能对布尔值进行转换。数字之间可以用下划线分割,例如:int num=1000000000 等价于 int num=10_0000_0000。

  • 自动类型转换

    低转高

  • 强制类型转换

    高转低:(类型)变量名

变量和常量

  1. 变量
  • 变量的定义

    type varName [=value];

  • 作用域

    • 局部变量:写在方法里,必须声明和初始化值
    • 实例变量:写在类里方法外,从属于对象,如果不自行初始化,则使用这个类型的默认值(布尔值默认flase、除了基本类型,其余的默认值均为null)
    • 类变量:static
  1. 常量
  • 常量的定义

    例如:final MAX_A = 10;

  1. 命名规范
  • 见名知意
  • 驼峰命名(变量、方法)
  • 类:首字母大写,驼峰命名
  • 常量:大写+下划线
  • 尽量不要使用拼音命名

运算符

  • 算术运算符

    +、-、*、/、%、++、–

    注:例如:b=a++是先复制再自增,b=++a是先自增再复制。

  • 赋值运算符

    =

  • 关系运算符

    >、<、>=、<=、==、!=、instanceof

  • 逻辑运算符

    &&、||、!

    注:在&&运算符中,例如:a&&b,如果a错了,那么b将不进行运算。

  • 位运算符

    &、|、^、~、>>、<<、>>>

    注:(1)<<:左移,相当于乘2;

    (2)>>:右移,相当于除2。

  • 条件运算符

    ?:

  • 扩展运算符

    +=、-=、*=、/=

    注:(1)a+=b 等价于 a=a+b;

    (2)a-=b 等价于 a=a-b。

包机制

  • 一般利用公司域名倒置作为包名
  • 导入包的语法:import

Java生成文档

/** */

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

二、流程控制

用户交互scanner

  • 需要导入的包:java.util.scanner

  • 可以通过scanner类来获取用户的输入

    import java.util.Scanner;
    
    public class Hello {
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);//创建一个扫描器对象,用于接收键盘数据
            if(scanner.hasNext()){//判断用户有没有输入字符串
                String str=scanner.next();//使用next()方式接受
            }
            scanner.close();
        }
    }
    

    注1:这里定义的scanner对象在使用完后建议用scanner.close()语句关闭,凡是属于IO流的类如果不关闭会一直占用资源。

    注2:next()不能得到带有空格的字符串,nextLine()可以得到带有空格的字符串。hasNextInt()、hasNextDouble()等语句可以判断下一个是否为int或double类型。

顺序结构

  • 程序默认的结构,自上而下的执行

选择结构

  • if单选择结构

  • if-else双选择结构

  • if-else if-else多选择结构

  • switch

    JDK1.7及之后的版本可以比较String类型

循环结构

  • while

    尽量避免死循环

  • do……while

  • for循环

  • 增强for循环

    例如:遍历数组的元素

    int[] array={10,20,30,40,50};
    for(int num:array){
        System.out.println(num);
    }
    

break&continue

  • break

    用于强制跳出循环

  • continue

    用于终止当次循环

  • return

    结束方法的运行

三、方法

方法的定义

  • 修饰符 返回值类型 方法名(参数类型 参数名) {

    ​ 方法体;

    }

    注:return可以终止方法。

方法调用

  • 类名.方法
  • 对象.方法

方法重载

  • 方法重载的规则

    (1)方法名称必须相同;

    (2)参数列表必须不同;

    (3)方法的返回类型可以相同也可以不相同;

    (4)仅仅返回类型不同不足以成为方法的重载。

可变长参数

  • 在方法声明中,在指定参数类型后加一个省略号

  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明。

    例如:

    public static void show(double d1,double d2,int...num){
        //方法体
    }
    

递归

  • 自己调用自己,给自己一个出口

四、数组

数组的定义

  • 创建数组

    dataType[] arrayRefvar(首选)或dataType arrayRefvar[]

    dataType[] arrayRefvar=new dataType[arraySize]

  • 数组初始化

    • 静态初始化

      例如:int a[]={1,2,3};

    • 动态初始化

      例如:int[] a=new int[2];

      ​ a[0]=1;

      ​ a[1]=2;

    • 默认初始化

数组的使用

  • 拿到下标拿到值
  • 增强for循环遍历
  • ArraylndexoutofBounds为数组下标越界异常

二维数组

  • dataType[] [] arrayRefvar

Arrays工具类

  • 使用前先导入Arrays包

    import java.util.Arrays

  • Arrays类中有很多关于数组的操作

    例如:查找、排序等。

排序算法

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 快速排序
  • 归并排序
  • 希尔排序
  • 堆排序
  • 基数排序

五、面向对象

类与对象

  • 本质

    以类的方式组织代码,以对象的形式封装数据

  • 类是对象的抽象

  • 对象是类的具体

构造方法

  • 不能有返回值,方法名和类名一致,如果手动定义了有参构造就必须要手动再加一个无参构造

注:快捷键:Alt+Insert直接生成构造函数。

new 对象

  • 栈存放引用
  • 堆存放具体对象

封装

  • 子类仅可以调用父类public的属性,private的属性可以用set和get方法调用

继承

  • 关键字extends
  • 子类拥有父类的全部特性

注1:所有的类都默认继承Object(直接或间接)。

注2:Java中只有单继承没有多继承(说的通俗一点,一个儿子只能有一个爸爸,一个爸爸可以有多个儿子)。

注3:父类构造器在子类中是默认调用的,可以不写,子类如果调用父类的构造器,必须在子类构造器的第一行用super()。

注4:如果父类和子类的属性或方法重名,子类中可以用super.调用父类的属性或方法。

注5:方法的重写:非静态方法可以被子类重写,静态方法重写与定义的数据类型有关,且重写时修饰符范围可以扩大,不能缩小(public>protected>default>private)。

多态

  • 父类的引用指向子类的对象

    例如:Person person=new Student();

  • 子类可以调用的方法是自己或继承父类的,父类不能调用子类独有的方法

  • instanceof关键,如果匹配,可以进行类型之间的转换

注1:多态是方法的多态,属性没有多态。

注2:多态存在的条件:(1)有继承关系;

(2)方法要重写;

(3)父类引用指向子类对象;

(4)static、final、private无法重写,所以没有多态。

注3:类型转换:(1)把子类转换为父类,不需要强制转换,可能丢失自己本来的一些方法。

(2)把父类转换为子类,需要强制转换。

修饰符

  • public

  • protected

  • private

  • static

    • static静态变量可以由类名直接调用
    • 非静态方法可以调用静态方法。静态方法可以调用静态方法,但不可以调用非静态方法
  • final

  • abstract

    • 抽象类的定义格式,例如:public abstract class A{}
    • 抽象类的所有方法,继承它的子类都必须要实现,除非子类也是抽象类
    • 抽象类中方法的定义格式,例如:public abstract void B();

    注:抽象方法必须在抽象类中,抽象类中可以写普通方法。

接口

  • 关键字interface
  • 只能定义方法名
  • 子类实现接口,必须实现其中的方法
  • 只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
  • 接口比抽象类更抽象

注1:接口中所有定义的方法都是抽象的,定义的属性都是常量(public static final)。

注2:implements关键字用于实现接口,例如:public class A implements B{},其中B为接口。

注3:接口可以多继承。

内部类

  1. 局部内部类
  2. 静态内部类
  3. 匿名内部类

六、异常

Throwable

  1. Exception

    • 运行时异常
  2. Error

    • AWT错误
    • JVM错误

五个关键字

  • try{}

  • catch(){}

    先小后大

  • finally{}

  • throw

    • 手动抛出异常,一般在方法中使用

    例如:throw new 异常();

  • throws

    • 方法抛出异常,假设方法中处理不了这个异常,可以在方法上抛出

    例如:public void test()throws 异常{}

注1:捕获异常的代码格式:

try{
    
}catch(Throwable e){
    
}finally{
    //最后执行的代码
}

注2:(1)finally可以不用;

(2)catch后的括号里写想要捕获的异常类型,位置异常或错误可以用Throwable;

(3)可以有多个catch,但是要把最大的异常写在最后面(Error—>Exception—>Throwable)。

注3:相关快捷键:Ctrl+Alt+T,可以选择生成try、catch、finally。

自定义异常

  • 继承Exception类即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值