Java基础学习整理笔记复习巩固Java基础知识

数据类型

定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空 间。

分类img
Java基本数据类型图

img
Java语言中整型常量的四种表达形式:

十进制整数:如:99,-100

八进制整数:要求以0开头,如015;

十六进制整数:要求以0x或者0X开头,如0x15;

二进制整数:要求以0b或者0B开头如0x01110011;

浮点类型:

  1. float类型又被称作单精度类型,尾数可以精确到7位有效数字。
  2. double表示这种类型的数值精度为float的两倍,又被乘坐双精度类型,绝大部分的应用程序的采用double类型。
  3. Java浮点类型常量有两种表示形式
    十进制数形式; 例:3.14 314.0 0.314
    科学计数法形式: 例:3.14e0 3.14E2 3.14E-1
  4. 浮点型不精确,不要用于比较
    浮点数存在误差数字不能精确表示,浮点数适合普通的科学和工程计算,精度足够;但是不适合精度要求非常高的商业计算,这时候要用BigDecimal进行运算和比较。
  5. 浮点常量默认类型是double,要改成float可以字后面加F或者f

基本数据类型转换:

取值范围:byte < short < int < long < float < double

数字为整数默认类型为:int;数字为小数默认类型为:double

  1. 自动转换:取值范围从小往大的转,会默认转换
  2. 强制转换:取值范围从大往小的转,会强制转换
    语法结构:目标类型 变量名=(目标类型)(被转换的数据);

强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
数据溢出:数据范围大的数据类型转换为数据范围小的数据类型,装不下,数据溢出了。
精度损失:就是把有一部分数据的精度给舍掉了。例如:int num = (int) 3.99;输出结果为3。
byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后在计算。
boolean类型不能发生数据类型转换

switch 的case类型:在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型, expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

**float f=3.4;是否正确 :**不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成 float f =3.4F;

**short s1 = 1; s1 = s1 + 1;有错吗?**对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。 而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。


编码

Java语言采用Unicode编码标准,

特点:Unicode(标准码),它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。


标识符

含义:给类,接口,方法,变量等取名字时使用的字符序列

**标识符的命名规范:**英文大小写字母 or 数字字符 or $和_

注意事项:不能以数字开头、不能包含特殊符号除了$和_、不能是Java中的关键字、区分大小写


注释

定义:用于解释说明程序的文字

作用: 在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。

分类:

  • 单行注释:在程序中注释一行代码;格式: // 注释文字
  • 多行注释:一次性的将程序中多行代码注释掉;格式: /* 注释文字 *
  • 文档注释:注释允许在程序中嵌入关于程序的信息;格式:/** 注释文字 */

访问修饰符

**定义:**Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

类型:

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变 量、方法。
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
  • public : 对所有类可见。使用对象:类、接口、变量、方法

img


变量和常量

常量:在Java语言中,主要是利用final关键字来定义常量。当常量被设定后,一般情况下就不允许再进行更改。为了提高代码的共享程度与提高代码的易读性。定义常量的时候一般都用大写字符和下划线,并且常量在定义的时候,就需要对常量进行初始化。

final MAX_SPEED = 120;

变量:在程序执行的过程中,其值会发生变化,就是用来存储可变化的数据的一个元素。书写格式:数据类型 变量名 = 初始值;(或者数据类型 变量名称; 变量名称 = 数据值;)

变量的作用域:规定了变量所能使用的范围,只有在作用域范围内变量才能被使用。根据变量声明地点的不同,变量的作用域也不同。

变量的分类:根据作用域的不同,一般将变量分为不同的类型:类变量、局部变量、方法参数变量及异常处理参数变量。

  • 类变量也称为成员变量,声明在类中,不属于任何一个方法,作用域是整个类。
  • 局部变量是指在方法或者方法代码块中定义的变量,其作用域是其所在的代码块。
  • 作为方法参数声明的变量的作用域是整个方法。
  • 异常处理参数变量的作用域是在异常处理块中,该变量是将异常处理参数传递给异常处理块,与方法参数变量类似。

运算符

**比较运算符:**是两个数据之间进行比较的运算,运算结果都是布尔值true和false。

img

逻辑运算符:

  • ​ 与(并且) && 全都是true才是true,否则是false
  • ​ 或(或者) || 有一个是true就是true;全都是false就是false
  • ​ 非(取反) !本来是true,变成false;本来是false,变成true
  • ​ 逻辑异或 ^ 两方必须不一样才成立

&和&&的区别: &运算符有两种用法:(1)按位与;(2)逻辑与。 &&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。 注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

移位操作符:运算对象是二进制的"位"。移位操作符只可用来处理整数类型。左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。"有符号"右移位操作符(>>)则按照操作符右侧指定的位数将操作符左边的操作数向右移动。“有符号"右移位操作符使用"符号扩展”:若符号为正,则在高位插入0;若符号位负,则在高位插入1.

Java中增加了一种"无符号"右移位操作符(>>>),它使用了"零扩展":无论正负,都在高位插入0。这一操作符在C或C++是没有的

算术运算符:算术运算符用在数学表达式中,其用法和功能与代数学中一样
img[外
++i和i++的区别:单独使用的时候是没有区别的,但是如果当成运算符,就会有区别了!先说a=i++,这个运算的意思是先把i的值赋予a,然后在执行i=i+1;当i初始等于3时,执行a=i++,最终结果a=3,i=4。而a=++i,这个的意思是先执行i=i+1,然后在把i的值赋予a;当i初始等于3时,执行a=++i,最终结果a=4,i=4。

三目运算符/三元运算符:格式:(条件表达式)?表达式1:表达式2;
如果条件表达式为true,就输出打印表达式1的内容
如果条件表达式为false,就输出打印表达式2的内容。
img

选择结构语句

if条件语句结构分类:

  1. if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
  2. if…else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
  3. if…else if…else 语句- 使用该语句来选择多个代码块之一来执行

switch case 语句:

img

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  • switch 语句可以包含一个 default 分支,该分支一般是 switch语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default分支不需要 break 语句。

循环结构语句

  • for循环
    语法结构:
    ​ for(初始化语句;判断条件语句;控制条件语句) {
    ​ 循环体语句;
    ​ }

  • while循环
    语法结构:
    ​ 初始化语句;
    ​ while(判断条件语句) {
    ​ 循环体语句;
    ​ 控制条件语句;
    ​ }

  • do-while循环
    语法结构:
    ​ 初始化语句;
    ​ do {
    ​ 循环体语句;
    ​ 控制条件语句;
    ​ } while((判断条件语句);

三种循环的区别:

  • do…while循环至少会执行一次循环体。
  • for循环和while循环只有在条件成立的时候才会去执行循环体
  • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

break ,continue ,return 的区别及作用:

  • break 跳出总上一层循环,不再执行循环(结束当前的循环体)
  • continue 跳出本次循环,继续执行下次循环(结束正在执行的循环进入下一个循环条件)
  • return 程序返回,不再执行下面的代码(结束当前的方法 直接返回

**在 Java 中,如何跳出当前的多重嵌套循环 :**在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环

public static void main(String[] args){ 
    ok;
    for(int i =0; i <10; i++){
        for(int j =0; j <10; j++){
            System.out.println("i="+ i +",j="+ j);
            if(j ==5){
                break ok;
            }
        }
    }
}

方法

**含义:**特定功能的代码块

**好处:**解决了代码的冗余(减少重复性的代码)

方法的分类:

  • 1.无参数无返回值的方法
  • 2.带参数的方法
  • 3.带返回值的方法

方法的重载

含义:方法与方法之间的关系 条件: 1.在同一个类中 2.方法名一致 3.参数列表的个数或者是类型不一致 4.与返回值无关(一个方法有没有返回值,不影响他们之间的重载关系) 好处:系统会根据实参类型自动匹配到对应的方法中

注意:编译时只看方法类型,不看方法名,以下两个方法是重载关系(参数和参数一一对应)


一维数组

**含义:**一组数据的容器 作用:存储多个数据

数组的声明: 数据类型[] 数组名/变量名;

注意:

  • 1.数组中的元素可以是基本数据类型,不管数组中存储的元素是基本数据类型还是引用数据类型,数组都是引用数据类型
  • 2.数组中的数据,称之为元素
  • 3.每个元素都有编号,称之为下标、索引
  • 4.下标从0开始
  • 5.下标的作用:通过下标可以定位到数组中的某个位置
  • 6.数组一旦初始化成功,长度将不可改变
  • 7.操作数组: 改 - 通过下标设置元素 查 - 通过下标获取元素 数组的查找 – 线性查找/顺序查找/二分法查找 查 - 获取元素个数 查 - 遍历数组
  • 8.System.out.println(array);这样是不行的,这样打印是的是数组的首地址。

数组的输出的三种方式

    (1)传统的for循环方式
    (2)for each循环
           for(String element : names){//依次将元素赋值给element
           System.out.println(element);}
    (3)利用Array类中的toString方法
            System.out.println(Arrays.toString(array));

数组的初始化:

  • 静态初始化:数据由程序员给定,长度由系统分配
  • 动态初始化:长度由程序员给定,数据由系统分配默认值
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李仙桎

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值