Java学习day02

本文详细介绍了Java中的数据类型,包括基本数据类型、整数、浮点、字符和布尔类型,以及它们的内存特性。此外,还涵盖了数据类型转换、运算符(包括算术、关系、逻辑和特殊字符),以及流程控制结构如if、switch、循环和跳转的使用。
摘要由CSDN通过智能技术生成

Java的数据类型

基本数据类型

基本数据类型可以用于声明变量,存储不同类型的数据。每个基本数据类型都有固定的内存大小和范围。基本数据类型是按值传递的,而不是按引用传递。所以当将基本数据类型的值传递给方法或赋给其他变量时,将复制该值,而不是共享同一个内存地址。

整数类型

默认使用int,都是有符号整数类型。

名称大小范围
byte1byte(8bit)-128127(-2^72^7-1)一般处理文件字节数据时使用byte[]
short(短整型)2byte(16bit)-215~215-1(-32768~32767)使用很少
int(整型)4byte(32bit)-231~231-1 (-2147483648~2147483647)整型默认使用的类型
long(长整型)8byte(64bit)-263~263-1常用 一般声明毫秒值和序列号

浮点型

默认使用double

名称大小范围有效数字
float(单精度浮点数)4byte(32bit)-3.4*1038~3.4*1038约6-7位
double(双精度浮点数)8byte(64bit)-1.7*10308~1.7*10308约15位

字符型

用于表示单个字符的Unicode字符类型。

名称大小范围
char2btye(16bit)‘\u0000’~‘\uffff’

布尔型

名称取值
truetrue
falsefalse

引用数据类型

如类、接口、数组等,它们用于创建复杂的数据结构和对象。

String也是引用数据类型。

数据类型转换

隐式转换(自动类型转换)

自动类型转换是指将一个较小范围的数据类型转换为较大范围的数据类型,而不会导致数据丢失或溢出。在自动类型转换中,Java编译器会自动完成类型转换,无需显式的类型转换操作符。

示例

int num = 100;
long bigNum = num; // 自动将int类型转换为long类型

显式转换(强制类型转换)

强制类型转换是指将一个较大范围的数据类型转换为较小范围的数据类型,或者将一种数据类型转换为另一种数据类型。在强制类型转换中,需要使用显式的类型转换操作符,并且注意可能会发生精度丢失或内存溢出的情况。

示例

double d = 3.14;
int num = (int) d; // 强制将double类型转换为int类型

在上述示例中,`double` 类型的变量 `d` 被强制转换为 `int` 类型的变量 `num`。因为 `int` 类型的范围较小,无法容纳 `double` 类型的小数部分,所以小数部分会被截断。

注意:

  • 布尔类型(boolean)不能与其他数据类型进行直接的类型转换。
  • 在将整数类型转换为浮点数类型时,不会发生精度丢失。
  • 在将浮点数类型转换为整数类型时,会将小数部分截断。

运算符

赋值运算符

  • =:将右侧的值赋给左侧的变量。例如:int x = 5;
  • +=-=*=/=%=:相当于右侧的值或变量进行相应算术运算后赋值给左侧变量

算术运算符

  • +:加法运算符,用于相加两个值。例如:int sum = 2 + 3;

  • -:减法运算符,用于相减两个值。例如:int difference = 5 - 2;

  • *:乘法运算符,用于相乘两个值。例如:int product = 3 * 4;

  • /:除法运算符,用于相除两个值。例如:double quotient = 10.0 / 3.0;

  • %:取模运算符,返回除法的余数。例如:int remainder = 10 % 3;

  • ++--:自增自减,包括前置和后置两种,前置时先运算然后返回值;后置时先返回值然后运算。例如:

    int num6 = 3;
    System.out.println(num6++ + ++num6); //3++ + ++4   3+5
    System.out.println(num6);  //5
    
  • <<>>:移位,

关系运算符

  • ==:相等运算符,用于检查两个值是否相等。例如:boolean isEqual = (x == y);
  • !=:不等运算符,用于检查两个值是否不相等。例如:boolean isNotEqual = (x != y);
  • >:大于运算符,用于检查左侧的值是否大于右侧的值。例如:boolean isGreater = (x > y);
  • <:小于运算符,用于检查左侧的值是否小于右侧的值。例如:boolean isLess = (x < y);
  • >=:大于等于运算符,用于检查左侧的值是否大于或等于右侧的值。例如:boolean isGreaterOrEqual = (x >= y);
  • <=:小于等于运算符,用于检查左侧的值是否小于或等于右侧的值。例如:boolean isLessOrEqual = (x <= y);

逻辑运算符

  • &&:短路逻辑与运算符,用于在两个条件都为真时返回真。例如:boolean result = (x > 0) && (y < 10);

  • ||:短路逻辑或运算符,用于在两个条件中至少有一个为真时返回真。例如:boolean result = (x > 0) || (y < 10);

  • !:逻辑非运算符,用于取反一个条件的值。例如:boolean result = !(x > 0);

    注意:

    • 与:全真为真,有假则假;或:全假为假,有真则真

    • 当执行短路逻辑与运算时,若前面的表达式为假,则后面的表达式不会执行

    int x = 3;
    boolean b3 = b2 && ++x == 4; //false
    System.out.println(x);
    
    • 当执行短路逻辑或运算时,若前面的表达式为真,则后面的表达式不会执行
    int y = 3;
    boolean b4 = b1 && ++y == 4; //true
    System.out.println(x);
    

三元运算符

  • condition ? value1 : value2:三目运算符根据条件的真假返回两个值之一。例如:int max = (x > y) ? x : y;

字符串拼接

可以使用加号运算符(+)来进行字符串拼接,将多个字符串连接成一个新的字符串。这个过程被称为字符串拼接或字符串连接操作。

  • 字符串拼接可以包括字符串常量、字符串变量和其他数据类型(会自动转换为字符串)。

  • 字符串拼接的结果是一个新的字符串,原始的字符串不会被修改。

方法

将代码模块化,将执行不同功能的代码声明在不同的方法中,要执行方法中的代码时,调用使用即可。

方法分类

  • 静态方法:使用static修饰的方法,可以在main中直接使用方法名调用
  • 成员方法(非静态方法):不使用static修饰的方法,是属于对象的行为
  • 构造方法
  • 抽象方法:没有方法体

静态方法

静态方法(static 方法)是属于类本身的方法,而不是类的实例。它们可以直接通过类名来调用,而不需要创建类的对象。静态方法在类加载时就已经存在,可以在任何时候被调用。

特点:

  • 静态方法属于类而不属于类的实例。它们不依赖于对象的状态,也不能直接访问非静态成员(实例变量和实例方法)。
  • 静态方法可以直接通过类名调用,无需创建类的实例。
  • 静态方法可以访问和修改静态成员(静态变量和静态方法)。

静态方法格式

权限修饰符 static 返回值类型 方法名(参数1,参数2,...){
方法体
return 放回值;

​ //表示方法的返回值,如果返回值类型为void,可以不写 表示没有返回值
​ }

示例:

public class MathUtils {
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int sum = MathUtils.add(5, 3);
        System.out.println("Sum: " + sum);
    }
}

静态方法调用

  • 直接使用方法名()调用,适用于在当前类中调用 较常用
  • 可以通过类名.方法名()调用,适用于在一个class中调用另一个class中的静态方法
  • 对象.方法名()调用 较少见

方法重载

方法重载(Method Overloading)是指在同一个类中定义多个同名方法,但它们具有不同的参数列表。方法重载允许我们使用相同的方法名来执行不同的操作,根据传递给方法的参数的类型、数量或顺序来决定使用哪个方法。

示例

public class test {

    //声明一个方法
    public static void method01(int a,int b) {
        System.out.println(a+b);
    }

    public static void method01(double a,int b) {
        System.out.println(a*b);
    }

    public static void method01(int a,int b,int c) {
        System.out.println(a+b-c);
    }

    public static void main(String[] args) {
        method01(1,2,3);
    }
}

流程控制

条件

  • if 语句:根据条件的真假执行不同的代码块。

    if (condition) {
        // 当条件为真时执行的代码块
    } else {
        // 当条件为假时执行的代码块
    }
    
  • switch 语句:根据不同的情况执行相应的代码块。

    switch (expression) {
        case value1:
            // 当 expression 等于 value1 时执行的代码块
            break;
        case value2:
            // 当 expression 等于 value2 时执行的代码块
            break;
        default:
            // 当 expression 不匹配任何 case 时执行的代码块
            break;
    }
    

循环

  • while 循环:在满足条件的情况下,重复执行一段代码块,通常用于未知迭代次数的循环。

    格式:

    初始化变量

    while(判断语句(判断变量的值是否满足条件)){

    循环体(循环执行的代码)

    步进表达式(改变变量的值)

    ​ }

    while (condition) {
        // 循环体中的代码块
    }
    
  • for 循环:在满足条件的情况下,重复执行一段代码块,通常用于已知迭代次数的循环。

    for (initialization; condition; update) {
        // 循环体中的代码块
    }
    
  • do-while 循环:先执行一次代码块,然后在满足条件的情况下重复执行,通常用于至少执行一次的循环。

    do {
        // 循环体中的代码块
    } while (condition);
    

跳转

  • break 语句:用于终止循环或 switch 语句的执行,并跳出对应的代码块。

  • continue 语句:用于跳过当前循环的剩余代码,继续下一次循环的执行。

ASC码对照

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92\124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL

特殊字符解释

NUL空VT 垂直制表SYN 空转同步
STX 正文开始CR 回车CAN 作废
ETX 正文结束SO 移位输出EM 纸尽
EOY 传输结束SI 移位输入SUB 换置
ENQ 询问字符DLE 空格ESC 换码
ACK 承认DC1 设备控制1FS 文字分隔符
BEL 报警DC2 设备控制2GS 组分隔符
BS 退一格DC3 设备控制3RS 记录分隔符
HT 横向列表DC4 设备控制4US 单元分隔符
LF 换行NAK 否定DEL 删除
  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值