• java基础总结(文字)


    01标识符/关键字/基本类型(四类八种)

    注释:

    代码的解释,不会变jvm执行的。

    • //单行
    • /*
    • 多行
    • */
    • /**
    • 文档
    • */

    关键字

    java中含有特殊含义的英文单词。 public void,关键字不用单独用作取名字。

    标识符

    java取名字。(相同项目不能有相同包名,相同包不能有相同类名,相同作用域不能有相同变量名)

    包名:com.test.helloworld

    类名:HelloWorld

    方法名:main

    参数名/变量名:args

    规则:不能以数字开头  _$ HelloWorld 。 不要用汉字

    约定:

    驼峰命名法:

    类名:HelloWorld   每个英文单词首字母大写

    方法名/变量名:   main getAge getStudentAge  除了第一个单词外其余首字母大写。

    ===============================================================

    逻辑类型

    boolean(布尔类型),取值范围为true/false

    整型(整数)

    byte(字节型),取值范围:-128~127   1字节   

    short(短整型),取值范围:-32768~32767     2字节

    int ( 整型) ,取值范围:-2147483648~2147483647 4字节

    long (长整型)取值范围:-9223372036854775808~9223372036854775807  8字节

    浮点型(小数)

    float(单精度的浮点型)1.4E-45~3.4028235E38 4字节

    double (双精度的浮点型)4.9E-324~1.7976931348623157E308 8字节  

    字符型

    char(字符型)char类型的变量,赋值的时候数据长度只能是一位,并且用’’包起来。 2字节

    拥有后缀(大小写都行):

    long l = 10000L;

    float f = 3.14F;

    double d = 3.33D;

    ===============================================================

    目前变量的定义必须写在main方法里面。

    public class VarDemo {

    public static void main(String[] args) {

    //main + alt + /

    //变量定义的格式:

    //数据类型 变量名 = 变量的值;

    boolean b1 = true;

    boolean b2 = false;

    //整数类型 默认类型是int

    byte byte1 = 127;

    short s = 130;

    int x = 4;

    x=5;

    int y = 10;

    x = y;

    long l = 2147483648L; //l L表示是一个long,推荐使用大写

    //浮点,浮点类型默认类型是 double

    float f = 3.14F; //f F表示是一个float,推荐使用大写

    double d = 3.14D; //D d表示是一个double,推荐使用大写

    //字符类型

    char c =  ' '; //单引号之间只能有一个值

    //java 大的数据类型不能直接赋值给小的数据类。

    }

    }

    02变量/一维数组、二维数组/运算符

    变量:

    相同的作用域下不能有同名的变量。

    基本数据类型:

    存的就是具体的值。

    int x = 3;

    引用数据类型:

    存的是一个地址值。(简单理解通过门牌号能找到楼盘

    字符串:

    String s = "ABC";

    数组:

    数组就是一个容器(存储多个东西的器皿,抽屉)。

    容器的特点:

    定长、固定数据类型。

    索引:

    下标,从0开始

    初始化就是赋值,赋值就是初始化。

    一维数组的格式1

    数据类型[] 数组名 = new 数据类型[数组的长度];

    int[] arr = new int[3];

    一维数组的格式2

    数据类型[] 数组名 = {1,2,3,4};

    int[] arr3 = {1,2,3,4,3,4,5,6,8,9,2,3};

    获取长度

    数组名.length;

    arr.length;

    取值/赋值******

    arr[0] = 10;

    System.out.println(arr[0]);

    二位数组的初始化格式1

    数据类型[][] 数组名 = new 数据类型[二位数组的长度][];

    int[][] arr = new int[3][3];

    二位数组的初始化格式2(优先掌握这一种,这种会更容易理解)********

    数据类型[][] 数组名 = {{1,值2}{1,值2}{1,值2}};

    int[][] arr2 = {{1,2},{3,4},{5,6},{1}};

    取值/赋值:

    arr[0][0] = 20;

    System.out.println(arr[0][0]);

    异常:运行出现了错误

    NullPointerException

    null 值调用属性或者方法

    ArrayIndexOutOfBoundsException

    访问了不存在的索引

    运算符

    算数运算符

    % 取余 取模

    ++ -- 自增1 自减1

    单独使用时,++ 放前和放后没有区别,都是+1

    参与运算,++在后面先把变量x的值取出来赋值(运算),再自增1

    参与运算,++在前面先把变量x自增1,再把值取出来赋值(运算)

    关系运算符,结果boolean

    == 比较相等

    != 比较不相等

    逻辑运算符,结果也是boolean

    & | ! && ||

    & false false

    | truetrue

    && 短路:如果左边已经决定了整个表达式的结果,那么右边不会执行

    赋值运算符

    int a = 10;  //10赋值给a变量;

    扩展赋值运算符 += *= /= %=; 底层包含强制类型转换

    //把左边和右边的值进行运算后赋值给左边。

    a +=10; //a = (int)(a+10);

    三元运算符

    boolean结果的表达式   ?  结果1 : 结果2;

    true 返回 结果1 false 返回结果2;

    03循环forwhiledowhile/流程控制语句ifswitch

    循环

    1、格式

    for(初始化语句 1 ;条件判断语句 2 ;循环体执行之后的语句 4) {

    循环体 3 ;

    }

    2、执行流程

    1 --> 2 --> 3 --> 4 --> 2 --> 3 --> 4 --> 2 false 结束

    true true

    最少

    1 --> 2 false 结束 循环的右大括号

    增强for循环:

    for(数据类型 变量名 : 数组或者集合名) {

    }

    增强for和普通for的区别是:增强for不能直接拿到索引。

    求和思想:

    int sum = 0;

    for (int i = 1; i <= 10; i++) {

    sum += i;

    }

    System.out.println(sum);

    while格式:

    初始化语句 1

    while(条件判断语句2) {

    循环体3;

    循环体执行之后的语句4;

    }

    执行流程 : for 是一样

    1 --> 2 --> 3 --> 4 --> 2 --> 3 --> 4 --> 2 false 结束

    true true

    最少

    1 --> 2 false 结束 循环的右大括号

    do while 格式(了解)

    初始化语句 1

    do {

    循环体3;

    循环体执行之后的语句4;

    }while(条件判断语句2);

    特点:do while 至少会执行一次循环体。

    循环控制语句

    continue; //跳出本次循环,继续下次循环

    break; //跳出全部循环

    嵌套循环

    for (int i = 1; i <= 4; i++) { //控制行

    for (int j = 1; j <= 5; j++) { //控制列

    System.out.print("*");

    }

    System.out.println();

    }

    条件控制语句

    1、格式

    2、执行流程

    格式1

    if() {

    true进入 if 语句体

    }

    格式2

    if() {

    true进入 if 语句体

    }else {

    false进入 else 语句体

    }

    格式3

    if() {

    当前true进入 if 语句体

    }else if () {

    当前true进入 if 语句体

    }else if () {

    当前true进入 if 语句体

    }...

    else {

    所有的if或者else if 都不满足则进入 else

    }

    格式3和多个if的区别

    格式3是分支流程,最终只会进入一个if

    多个if是只要满足条件就能进入if,不存在互斥。

    switch(了解)

    switch() {

    case 1:

    语句;

    break;

    case 2:

    语句;

    break;

    case 3:

    语句;

    break;

    default:

    语句;

    break;

    }

    switch()值的类型:byteshortintcharString、枚举

    switch什么时候结束,遇到break}

    break穿透:没有遇到break,不会再次进行case匹配。

    ifswitch 的区别:

    if的第三种格式

    if else if .... else

    switch执行流程是非常相似的。

    switch需要匹配的值是一个范围的时候,那么很难用。

    if的条件更加丰富,只要表达式结果是boolean类型就ok

    switch只是一个值的比较。

    什么时候用switch:只比较值是否相等,且数量较少的时候。性能高过if

    95%都使用if

    04面向对象概念/方法、构造方法/成员变量和局部变量的区别

    函数/方法:

    函数就是功能实现,它是遵循了特定语法,一段具有特定功能代码。(类通过定义函数来描述类的功能)

    位置:类中方法外,与main方法平级*******

    ***********方法不调用,不执行***********

    分类:

    非构造函数(普通函数)

    格式

    • 按照main方法修改。
    • 修饰符 函数返回值类型 函数名(参数类型 参数名...){函数体}

    public int add(int a,int b){

    return a+b;

    }

    修饰符:

    • public
    • protected
    • 默认修饰符
    • private

    权限逐步降低。

    public的访问权限最大。private类型的访问权限最小

    函数返回值类型:

    八大基本类型 / 引用类型 / 空类型(void

    函数名:

    随便定义,语法要求第一个字母小写,函数名要见名知意。

    参数类型:

    就是一个变量的类型(八大基本类型 / 引用类型)

    形参实参:(不要纠结)

    • 形参:方法参数列表
    • 实参:真实参数入的值,实际参与运算的值。

    面向对象概念

    面向对象:把事情交给对象完成(厨师、快递员),对象具备完成某件事情的人或物。

    面向过程:自己一条龙完成所有事情

    类于对象

    模板,描述的是具有共性的一类事物,所以我们又可以把类称作模板技术,

    静止的(属性用`变量`来描述)和(动态的行为用`函数`来描述)。

    例子:

    手机、汽车,鱼、狗

    对象:类的具体化

    构造函数

    创建对象,兼职成员对属性就行赋值。

    分类:

    • 无参构造函数(默认构造函数)

    public 类名() {

    }

    • 带参数构造函数

    public 类名(参数类型 参数名) {

    }

    注意细节:

    • 函数名必须跟类名保持一致
    • 不需要声明函数返回值
    • 如果在类中定义了任意构造方法,那么java不再提供默认空参构造方法

    成员变量和局部变量的区别:

    局部变量特点:

    • 定义在函数体内
    • 定义在函数参数列表里
    • 代码块中{}
    • 成员变量特点
    • 定义在类体内
    • 在函数外
    • 在代码块外
    • 生命周期:
    • 局部变量出了包含他的{}就死亡
    • 成员变量对象不消亡就一起存在
    • 如何调用函数

    05方法重载/继承/方法重写/super关键字和this关键字

    1、方法函数重载

    • 规则:方法名一样,参数不一样,与返回值无关
    • 参数的个数不一样
    • 参数的类型不一样
    • 如果参数个数一样,类型也一样,但是顺序不一样
    • 普通方法和构造方法都能重载

    2java内存(了解)

    java的内存包含了栈、堆、方法区、寄存器

    栈:

    • 先进后出
    • 局部变量、方法都在栈中

    堆:

    • new出来的对象就在堆
    • 两个引用(变量)指向同一个对象(理解+掌握)。

    Student s = new Student();

    Student s2 = s;

    3、封装(把代码放入方法)    三大特征都是为了少些代码少修改代码。

    Encapsulation。意思是将代码通过函数的形式将一些代码细节包装起来,防止外部代码的随机访问,

    要访问这些数据就必须通过调用函数来完成。

    好处:

    • 提高了代码的阅读性
    • 提高了代码的可维护性

    体现:方法、对象、private get/set

    get/set和构造方法都可以对成员变量进行赋值。

    4继承 inherit

    生活中的继承:子承父业。

    java中的继承:两个类之间通过extends关键字来描述父子关系,子类便可拥有父类的非私有成员。

    解决问题

    • 提高了代码复用性
    • 代码的维护性更高

    语法:

    public class 父类 {

    }

    public class 子类 extends 父类 {

    }

    注意事项:

    • 如果一个类不继承任何类,默认继承Object,Objectjava中的祖宗类。
    • Java是单继承(一个类只能继承于一个类),多层继承,一个父类可以有多个子类。
    • 创建本类对象之前会先初始化父类对象
    • 子类不能继承父类的private成员(属性,方法)

    5、方法重写/覆盖

    • 前提条件:继承或者实现
    • 子父类中出现了一模一样的方法。修饰符、返回值、方法名、参数都必须一模一样。
    • 作用:方法升级。

    6super关键字与this关键字

    • super指向父类(调用父类方法或属性时候用到)
    • this指向当前类(区分局部变量和成员变量同名)
    • super() 调用父类构造方法
    • this() 调用本类其他构造

    7、修饰符

    访问修饰符

    • public protected 默认修饰符 private
    • 权限逐步降低。
    • public的访问权限最大。private类型的访问权限最小

    非访问修饰符

    • static 静态(共享) 后面会通过实际例子讲解
    • final 常量、最终类(不能被继承,被绝育了)方法(不能被重写)
    • abstract 抽象

    06多态/api使用/字符串方法学习

    1、多态 Polymorphism 少写代码

    概念:用父类的类型来接收子类的对象

    先决条件:

    • 继承/接口实现
    • 父类类型接收子类对象

    优点:

    • 扩展性强,解决了代码复用,降低类型耦合度
    • 可以少定义变量,少些重复代码。

    案例:一个方法接受不同的子类类型。

    缺点:

    • 不能使用子类特有方法
    • 可以使用强转,转成对应子类类型,解决这个问题。

    使用方法:

    父类 变量名1 = 子类对象;

    子类 变量名2 = (子类)变量名1;

    多态一般伴随重写使用。

    场景:

    public void driverCar(Car car) {

    car.run();

    }

    2api使用

    打开->显示->索引->输入java提供的类

    3、字符串

    原理:

    char[] ch = {'a','b','c'};

    特点:

    • 方法不能改变String本身

    方法

    • equals:判断字符串是是否一样,大小写敏感
    • split:切割
    • replace:替换
    • substring:字符串截取
    • trim:删除字符串两端的空格
    • length:获取字符串长度
    • equalsIgnoreCase:判断是否一样,忽略大小写
    • indexOf:获取指定内容在字符串中出现的位置
    • isEmpty:判断字符串是否为空
    • lastIndexOf:获取要匹配内容在字符串中最后出现的位置

    构造方法:

    基本不用。

    4== equals 区别

    • == 比较基本数据类型比较的是值,比较引用数据类型比较的是地址值。
    • equals Object类中的方法,基本数据类型无法调用。
    • equals默认使用==号,重写之后一般比较的是内容。
  • 相关阅读:
    基本计算器 II
    查看JVM使用的什么垃圾收集器
    java nio 例子
    获取jvm加载的类
    对上传的二进制视频文件进行第一帧截取
    conda与pip
    微信聊天记录导出与分析
    k8s creationTimestamp 参数
    adb logcat使用及Debug技巧
    聊聊HDR
  • 原文地址:https://www.cnblogs.com/zhiyu07/p/14284616.html
Copyright © 2020-2023  润新知