JAVA学习 DAY5 变量&数据类型 [万字长文!一篇搞定!]

  本系列可作为JAVA学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励! 


 系列文章目录

JAVA学习 DAY1 初识JAVA

JAVA学习 DAY2 java程序运行、注意事项、转义字符

JAVA学习 DAY3 注释与编码规范讲解

JAVA学习 DAY4 DOS操作讲解及实例

JAVA学习 DAY5 变量&数据类型 [万字长文!一篇搞定!] 

JAVA学习 DAY6 运算符

JAVA学习 DAY7 程序逻辑控制【万字长文!一篇搞定!】

JAVA学习 DAY8 方法【万字长文!一篇搞定!】

JAVA学习 DAY9 数组【万字长文!一篇搞定!】

JAVA学习 DAY10 类和对象【万字长文!一篇搞定!】

JAVA学习 DAY11 类和对象_续1【万字长文!一篇搞定!】

JAVA学习 DAY12 继承和多态【万字长文!一篇搞定!】

JAVA学习 DAY13 抽象类和接口【万字长文!一篇搞定!】

深度剖析 Java 图书管理系统设计与实现:类、接口与对象的实战应用

JAVA学习 DAY15 Java String类

JAVA学习 DAY16 Java 异常

Java 基础全攻略:从语法到实战项目(简单总结)

 拓展文章

Sublime安装指导!只需四步!

图文详解汉诺塔问题:从递归思想到代码实现(零基础也能看懂)

Java避坑指南:千万别在构造方法中调用重写的方法!(附代码案例+执行流程全解析)

Java 接口学习核心难点深度解析

深入剖析 Java 中的深拷贝与浅拷贝:原理、实现与最佳实践


目录

 系列文章目录

前言

一、Java中的变量

1.变量的组成

2.变量的声明

3.Java变量的类型

(1) 基本数据类型变量(原始类型)

(2) 引用数据类型变量

4.变量的命名规则

5.变量的作用域

6.变量的初始化

7.final变量(常量)

8.类型转换

9.程序中“+”的使用

(1)当左右两边都是数值型时,则做加法运算

(2)当左右两边有一方为字符串时,则做拼接运算

(3)运算顺序,都是从左到右

(4)代码示例

二、数据变量类型 详解

1.Java中的整数类型

(1)四种整数类型

(2)声明和初始化示例

(3)使用注意事项

(4)实际应用建议

2.Java中的浮点类型

(1)两种浮点类型

① float(单精度浮点型)

② double(双精度浮点型)

(2)声明和初始化示例

(3)浮点数的特殊值

(4)浮点运算的特点

(5)使用建议

3.Java中的字符类型(char)

(1)基本概念

(2)主要特点:

(3)声明和初始化

(4)转义字符

(5)字符运算

(6)特殊注意事项

(7)实际应用示例

4.Java中的布尔类型(boolean)

(1)基本概念

(2)主要特点:

(3)声明和初始化

(4)布尔运算

1. 逻辑运算符

2. 比较运算符

(5)特殊注意事项

(6)实际应用示例

5.Java中的类型转换:自动类型转换与强制类型转换

(1)类型转换概述

(2)自动类型转换(Widening Conversion)

① 基本概念

②转换规则(按方向)

③ 具体示例

④特殊情况

(3)强制类型转换(Narrowing Conversion)

①基本概念

②主要风险

③ 具体示例

④特殊转换

(4)类型转换规则总结

①自动转换适用场景

② 需要强制转换的场景

(5)实际应用建议

(6)特殊类型转换案例

6.ASCII码、Unicode编码与UTF-8编码详解

(1)ASCII码(美国信息交换标准代码)

①基本概念

② 核心特性

③典型ASCII码示例

④局限性

(2)Unicode编码(统一码)

①基本概念

②核心特性

③Unicode版本发展

④ 编码示例

⑤ 存储实现

(3)UTF-8编码(Unicode转换格式8位)

① 基本概念

②核心特性

③ 编码规则

④ 编码示例

⑤优势

(4)三种编码的关系与比较

(6)实际应用

①Java中的编码处理

② 编码识别与转换

③编程注意事项

三、总结


前言

小编作为新晋码农一枚,会定期整理一些写的比较好的代码,作为自己的学习笔记,会试着做一下批注和补充,如转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!

本系列文章可以作为学习JAVA的笔记使用,本文除了小编的笔记,还整理了 宝藏老师 B站up主:韩顺平  的系列视频笔记:【零基础 快速学Java】韩顺平 零基础30天学会Java

一、Java中的变量

变量是Java程序中最基本的存储单元,用于存储数据值。在Java中,每个变量都有特定的类型,决定了变量可以存储的数据种类和大小。变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量()

不论使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如:变量有三个基本要素(类型+名称+值)

1.变量的组成

Java变量由三个部分组成:变量=变量名+值+数据类型

  1. ​变量类型​​ - 决定变量可以存储的数据类型
  2. ​变量名​​ - 用于标识变量的唯一名称
  3. ​变量值​​ - 存储在变量中的数据

2.变量的声明

变量声明的基本语法:(变量必须先声明,后使用,即有顺序,该区域的数据/值可以在同一类型范围内不断变化,变量在同一个作用于内不能重名)

数据类型 变量名 [= 初始值];

示例:

int age;          // 声明一个整型变量age
double price;     // 声明一个双精度浮点变量price
char grade = 'A'; // 声明并初始化一个字符变量grade

3.Java变量的类型

Java中的变量主要分为两大类:

(1) 基本数据类型变量(原始类型)

类型大小范围/描述示例
byte8位-128到127byte b = 100;
short16位-32,768到32,767short s = 1000;
int32位-2^31到2^31-1int i = 100000;
long64位-2^63到2^63-1long l = 100L;
float32位单精度浮点数float f = 3.14f;
double64位双精度浮点数double d = 3.14;
char16位Unicode字符char c = 'A';
boolean1位true或falseboolean flag = true;

(2) 引用数据类型变量

  • 类类型(如String)
  • 接口类型
  • 数组类型

示例:

String name = "张三";  // String是类类型
int[] numbers = {1, 2, 3};  // 数组类型

4.变量的命名规则

  1. 必须以字母、下划线(_)或美元符号($)开头
  2. 后续可以是字母、数字、下划线或美元符号
  3. 不能使用Java关键字
  4. 区分大小写
  5. 建议使用驼峰命名法(如:studentName)

5.变量的作用域

根据声明位置不同,变量分为:

  1. ​局部变量​​ - 在方法或代码块内声明

    • 必须在使用前初始化
    • 只在声明它的方法/代码块内有效
  2. ​实例变量(成员变量)​​ - 在类内但在方法外声明

    • 属于对象实例
    • 有默认值(数值型为0,布尔型为false,引用型为null)
  3. ​类变量(静态变量)​​ - 使用static关键字声明

    • 属于类而非实例
    • 可通过类名直接访问

示例:

public class Example {
    static int classVar = 10;  // 类变量
    int instanceVar = 20;      // 实例变量
    
    void method() {
        int localVar = 30;     // 局部变量
        System.out.println(localVar);
    }
}

6.变量的初始化

Java要求变量在使用前必须初始化:

  • 局部变量:必须显式初始化
  • 实例变量和类变量:有默认值,但显式初始化是良好实践

7.final变量(常量)

使用final关键字声明的变量只能被赋值一次:

final double PI = 3.14159;

final变量通常用大写字母命名,多个单词用下划线分隔。

8.类型转换

Java支持两种类型转换:

  1. ​自动类型转换(隐式转换)​​ - 小类型转大类型

    int i = 100;
    long l = i;  // 自动转换
  2. ​强制类型转换(显式转换)​​ - 大类型转小类型

    double d = 100.04;
    long l = (long)d;  // 强制转换,值为100

理解和使用变量是Java编程的基础,合理选择变量类型和命名规范对编写可读性高、效率好的代码至关重要。

9.程序中“+”的使用

(1)当左右两边都是数值型时,则做加法运算

(2)当左右两边有一方为字符串时,则做拼接运算

(3)运算顺序,都是从左到右

(4)代码示例

public class add{
	public static void main(String args[]){
	   System.out.println(100+98);//198
	   System.out.println("100"+98);//10098
	   System.out.println(100+3+"hello");//103hello
	   System.out.println("hello"+100+3);//hell1003
	}
}

二、数据变量类型 详解

1.Java中的整数类型

Java提供了四种整数类型变量,用于存储不同范围的整数值。这些类型在内存占用和数值范围上有所不同,程序员可以根据实际需求选择合适的类型。

(1)四种整数类型

  1. ​byte(字节型)​ 1byte=8 bit

    • 大小:8位(1字节)
    • 范围:-128 到 127
    • 默认值:0
    • 用途:节省空间,处理二进制数据
  2. ​short(短整型)​

    • 大小:16位(2字节)
    • 范围:-32,768 到 32,767
    • 默认值:0
    • 用途:较少使用,特定场合节省空间
  3. ​int(整型)​

    • 大小:32位(4字节)
    • 范围:-2,147,483,648 到 2,147,483,647
    • 默认值:0
    • 用途:最常用的整数类型
  4. ​long(长整型)​

    • 大小:64位(8字节)
    • 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
    • 默认值:0L
    • 用途:需要大范围整数时使用

(2)声明和初始化示例

byte b = 100;            // 字节型
short s = 1000;          // 短整型
int i = 100000;          // 整型(最常用)
long l = 10000000000L;   // 长整型(注意L后缀)

(3)使用注意事项

  1. ​字面量表示​​:

    • 默认整数字面量是int类型
    • 长整型需要在数字后加L或l(推荐大写L)
  2. ​类型转换​​:

    • 小范围类型可以自动转换为大范围类型(如byte→int)
    • 大范围类型转小范围类型需要强制转换,可能丢失精度
    int a = 100;
    byte b = (byte)a;  // 强制转换
  3. ​运算规则​​:

    • 整数运算结果至少是int类型
    • byte/short/char参与运算时自动提升为int
    byte x = 10;
    byte y = 20;
    int z = x + y;  // 结果是int类型
  4. ​溢出问题​​:

    • 超出类型范围的值会导致溢出(循环)
    • 需要特别注意边界情况
    int max = Integer.MAX_VALUE;  // 2147483647
    int overflow = max + 1;       // 变成-2147483648

(4)实际应用建议

  1. 大多数情况下使用int类型即可
  2. 处理大文件或网络数据时考虑使用byte
  3. 需要存储很大数值时使用long
  4. 在数组或集合中存储大量数值时,根据范围选择合适类型可以节省内存

整数类型是Java编程中最基础也是使用最频繁的数据类型,理解它们的特性和区别对于编写高效、正确的Java程序至关重要。

2.Java中的浮点类型

Java提供了两种浮点类型来表示带小数部分的数值,用于处理科学计算、财务计算等需要高精度小数的场景。

(1)两种浮点类型

① float(单精度浮点型)
  • ​大小​​:32位(4字节)
  • ​范围​​:约±3.40282347E+38F(6-7位有效数字)
  • ​默认值​​:0.0f
  • ​后缀​​:必须使用'f'或'F'后缀
  • ​精度​​:约6-7位十进制数字
  • ​用途​​:节省空间时使用,但通常推荐使用double
② double(双精度浮点型)
  • ​大小​​:64位(8字节)
  • ​范围​​:约±1.79769313486231570E+308(15位有效数字)
  • ​默认值​​:0.0d
  • ​后缀​​:可选的'd'或'D'后缀(默认浮点字面量就是double)
  • ​精度​​:约15位十进制数字
  • ​用途​​:Java默认的浮点类型,推荐使用

(2)声明和初始化示例

float f1 = 3.14f;       // 必须加f后缀
float f2 = 1.23e4f;     // 科学计数法表示
double d1 = 3.1415926;  // 默认是double
double d2 = 1.23e-4;    // 科学计数法

(3)浮点数的特殊值

Java浮点类型支持几个特殊值:

  • ​正无穷大​​:Double.POSITIVE_INFINITY
  • ​负无穷大​​:Double.NEGATIVE_INFINITY
  • ​NaN(非数字)​​:Double.NaN
double inf = 1.0/0.0;    // 正无穷大
double negInf = -1.0/0.0; // 负无穷大
double nan = 0.0/0.0;    // NaN

(4)浮点运算的特点

  1. ​精度问题​​:

    • 浮点数不能精确表示所有十进制小数
    • 比较时应避免直接使用==,而应检查差值是否在允许范围内
    // 不推荐
    if (d1 == d2) {...}
    
    // 推荐方式
    final double EPSILON = 1e-10;
    if (Math.abs(d1 - d2) < EPSILON) {...}
  2. ​运算规则​​:

    • 涉及float和double的运算,结果自动提升为double
    • 整数与浮点数运算,整数自动转换为浮点数
  3. ​舍入误差​​:

    • 浮点运算可能产生舍入误差
    • 对精度要求高的计算应考虑使用BigDecimal

(5)使用建议

  1. ​默认选择double​​:除非有特殊内存限制,否则优先使用double
  2. ​避免直接比较​​:使用阈值比较代替直接相等比较
  3. ​财务计算​​:使用BigDecimal代替浮点类型
  4. ​科学计算​​:注意数值范围和精度限制
  5. ​格式化输出​​:使用DecimalFormat控制输出格式
double price = 19.99;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(price));  // 输出: 19.99

浮点类型是Java中处理实数的重要工具,理解其特性和限制对于编写正确的数值计算程序至关重要。

3.Java中的字符类型(char)

(1)基本概念

Java中的字符类型char用于表示单个Unicode字符,它是Java的原始数据类型之一。

(2)主要特点:

  • ​大小​​:16位(2字节)
  • ​范围​​:0到65,535(\u0000到\uffff)
  • ​默认值​​:'\u0000'(空字符)
  • ​Unicode支持​​:可以表示大多数世界语言的字符

(3)声明和初始化

char c1 = 'A';          // 使用单引号表示字符字面量
char c2 = 65;           // 使用ASCII码值
char c3 = '\u0041';     // 使用Unicode转义序列
char c4 = '\n';         // 转义字符(换行符)

(4)转义字符

Java支持以下常用转义字符:

转义序列描述
\n换行符
\t制表符
\r回车符
\\反斜杠
\'单引号
\"双引号
\b退格符
\f换页符

(5)字符运算

char类型可以参与数值运算,因为它在底层存储的是Unicode码点值:

char c = 'A';
int code = c;          // 获取字符的Unicode码点值(65)
char nextChar = (char)(c + 1);  // 结果为'B'

(6)特殊注意事项

  1. ​与String的区别​​:

    • char是原始类型,String是对象类型
    • char使用单引号,String使用双引号
  2. ​char与int的转换​​:

    char c = '9';
    int numericValue = c - '0';  // 将字符数字转换为数值9
  3. ​Unicode补充字符​​:

    • 基本多语言平面(BMP)字符可以直接用char表示
    • 辅助字符(码点大于0xFFFF)需要使用两个char(代理对)表示

(7)实际应用示例

字符遍历

String str = "Hello";
for (int i = 0; i < str.length(); i++) {
    char ch = str.charAt(i);
    System.out.println(ch);
}

字符分类检查 

    char ch = 'A';
    if (Character.isLetter(ch)) {
        System.out.println("这是一个字母");
    }
    if (Character.isDigit(ch)) {
        System.out.println("这是一个数字");
    }

    大小写转换 

      char lower = Character.toLowerCase('A');  // 'a'
      char upper = Character.toUpperCase('a');  // 'A'

      Java的char类型为处理文本数据提供了基础支持,特别是在需要处理单个字符或进行字符级操作时非常有用。理解char的特性对于正确处理文本输入输出、字符串操作等任务至关重要。

      4.Java中的布尔类型(boolean)

      (1)基本概念

      布尔类型是Java中最简单的数据类型,用于表示逻辑值,只有两个可能的取值:

      • ​true​​:表示逻辑真
      • ​false​​:表示逻辑假

      (2)主要特点:

      • ​大小​​:Java规范没有明确规定boolean的大小,通常JVM实现使用1位或1字节
      • ​默认值​​:false(对于类成员变量)
      • ​用途​​:主要用于条件判断和控制流程

      (3)声明和初始化

      boolean isJavaFun = true;    // 声明并初始化为true
      boolean isRaining = false;   // 声明并初始化为false
      boolean isAdult;             // 声明,默认值为false(如果是类成员变量)

      (4)布尔运算

      Java提供了多种布尔运算符:

      1. 逻辑运算符
      • &&:逻辑与(短路与)
      • ||:逻辑或(短路或)
      • !:逻辑非
      boolean a = true;
      boolean b = false;
      
      boolean andResult = a && b;  // false
      boolean orResult = a || b;   // true
      boolean notResult = !a;      // false
      2. 比较运算符
      • ==:等于
      • !=:不等于
      • ><>=<=:数值比较(结果为boolean)
      int x = 5;
      int y = 10;
      
      boolean isEqual = (x == y);    // false
      boolean isGreater = (x > y);   // false

      (5)特殊注意事项

      1. ​与C/C++的区别​​:

        • Java中的boolean不能转换为其他类型(如int)
        • 不能使用0/1代替false/true
        // 错误示例(在C/C++中可以,但在Java中不行)
        // int flag = 1;
        // if (flag) {...}
        
        // 正确写法
        boolean flag = true;
        if (flag) {...}
      2. ​短路特性​​:

        • &&||具有短路特性
        • 第一个操作数能确定结果时,不会计算第二个操作数
        if (obj != null && obj.isValid()) {
            // 如果obj为null,不会调用isValid()方法
        }
      3. ​布尔表达式​​:

        • 所有条件表达式的结果都是boolean类型
        • 三目运算符中也使用boolean条件
        int age = 20;
        String status = (age >= 18) ? "成人" : "未成年";

      (6)实际应用示例

         条件控制

      boolean hasPermission = checkPermission();
      if (hasPermission) {
          // 执行有权限的操作
      } else {
          // 提示无权限
      }

      循环控制 

        boolean isRunning = true;
        while (isRunning) {
            // 执行某些操作
            isRunning = shouldContinue(); // 根据条件更新布尔值
        }

        方法返回值 

          public boolean isEvenNumber(int num) {
              return num % 2 == 0;
          }

          标志位使用 

            boolean dataLoaded = false;
            // ...
            if (!dataLoaded) {
                loadData();
                dataLoaded = true;
            }

            布尔类型虽然简单,但在Java编程中无处不在,是控制程序流程的基础。正确使用布尔类型可以使代码逻辑更加清晰,条件判断更加明确。

            5.Java中的类型转换:自动类型转换与强制类型转换

            (1)类型转换概述

            Java作为强类型语言,在不同数据类型之间进行转换时需要遵循特定规则。类型转换主要分为两种:

            1. ​自动类型转换(隐式转换)​​ - 由编译器自动完成
            2. ​强制类型转换(显式转换)​​ - 需要程序员明确指定

            (2)自动类型转换(Widening Conversion)

            ① 基本概念

            当满足以下条件时,Java会自动进行类型转换:

            • 两种数据类型兼容
            • 目标类型范围大于源类型范围
            ②转换规则(按方向)
            byte → short → int → long → float → double
                      ↑
                     char
            ③ 具体示例
            int i = 100;
            long l = i;      // 自动转换:int → long
            float f = l;     // 自动转换:long → float
            double d = f;    // 自动转换:float → double
            
            char c = 'A';
            int charToInt = c;  // 自动转换:char → int(得到Unicode值65)
            ④特殊情况
            • ​整数到浮点数​​:可能损失精度(如很大的long转float)
            long bigNum = 123456789012345L;
            float f = bigNum;  // 可能丢失精度

            (3)强制类型转换(Narrowing Conversion)

            ①基本概念

            当需要将大范围类型转换为小范围类型时,必须使用强制类型转换:

            目标类型 变量名 = (目标类型)值;
            ②主要风险
            • ​数据溢出​​:值超出目标类型范围
            • ​精度丢失​​:浮点数转整数时小数部分被截断
            ③ 具体示例
            double d = 100.04;
            long l = (long)d;    // 结果为100(小数部分丢失)
            int i = (int)l;      // 强制转换:long → int
            
            byte b = (byte)257;  // 结果为1(257-256=1,因为byte范围是-128~127)
            ④特殊转换
            • ​浮点数与整数​​:
            float f = 3.14f;
            int i = (int)f;      // 结果为3(直接截断小数部分)
            • ​char与数值类型​​:
            int i = 65;
            char c = (char)i;    // 结果为'A'

            (4)类型转换规则总结

            ①自动转换适用场景
            • 整数到更大范围的整数
            • 整数到浮点数
            • 浮点数到更大范围的浮点数
            • char到int/long/float/double
            ② 需要强制转换的场景
            • 大范围类型转小范围类型
            • 浮点数转整数
            • 数值类型与char之间的双向转换
            • 不兼容类型之间的转换(如数值与boolean)

            (5)实际应用建议

            ①​​避免不必要的强制转换​​:可能引发精度损失或溢出

            ②​​注意运算时的自动提升​​:

            byte a = 10;
            byte b = 20;
            byte c = (byte)(a + b);  // 需要强制转换,因为运算结果默认为int

            ③处理大数值时特别小心: 

              long bigNum = 3000000000L;
              int i = (int)bigNum;  // 结果为-1294967296(溢出)

              ​④使用类型检查方法:

              double d = 100.0;
              if (d >= Integer.MIN_VALUE && d <= Integer.MAX_VALUE) {
                  int i = (int)d;
              }

              (6)特殊类型转换案例

              ​字符串与数值转换​​:

              // String转数值
              String numStr = "123";
              int num = Integer.parseInt(numStr);
              
              // 数值转String
              String s = String.valueOf(123);

              包装类转换​​(自动装箱/拆箱):

              Integer obj = 100;    // 自动装箱(int → Integer)
              int val = obj;        // 自动拆箱(Integer → int)

              理解并正确应用类型转换是Java编程的基础,合理使用可以增强代码灵活性,不当使用则可能导致难以发现的错误。

              6.ASCII码、Unicode编码与UTF-8编码详解

              (1)ASCII码(美国信息交换标准代码)

              ①基本概念

              ASCII(American Standard Code for Information Interchange)是最早的字符编码标准,诞生于1960年代。

              ② 核心特性
              • ​编码范围​​:7位二进制(实际使用8位存储,最高位为0)
              • ​字符数量​​:128个(0-127)
              • ​编码空间​​:
                • 0-31:控制字符(如换行、回车等)
                • 32-126:可打印字符(字母、数字、标点等)
                • 127:删除控制字符
              ③典型ASCII码示例
              十进制字符说明
              65A大写字母A
              97a小写字母a
              480数字0
              32空格
              ④局限性
              • 仅支持英语字符
              • 无法表示其他语言字符(如中文、日文等)

              (2)Unicode编码(统一码)

              ①基本概念

              Unicode是为解决ASCII局限性而开发的国际字符编码标准,目标是包含全世界所有书写系统的字符。

              ②核心特性
              • ​编码空间​​:理论上支持1,114,112个码位(目前使用17个平面,每个平面65,536个字符)
              • ​编码方式​​:
                • 码点(Code Point):U+十六进制数(如U+0041表示'A')
                • 分为17个平面(Plane),基本多语言平面(BMP,Plane 0)包含最常用字符
              ③Unicode版本发展
              • 最新版本:Unicode 15.0(2022年发布)
              • 已编码字符:超过14万个(包括各种文字、符号、表情等)
              ④ 编码示例
              码点字符说明
              U+0041A拉丁大写A
              U+4E2D中文"中"
              U+1F600😀笑脸表情
              ⑤ 存储实现

              Unicode本身只是字符集,具体存储实现由UTF-8、UTF-16等编码方案决定。

              (3)UTF-8编码(Unicode转换格式8位)

              ① 基本概念

              UTF-8是Unicode的可变长度字符编码,由Ken Thompson和Rob Pike于1992年创建。

              ②核心特性
              • ​兼容性​​:完全兼容ASCII(ASCII字符UTF-8编码不变)
              • ​变长设计​​:使用1-4个字节表示一个字符
              • ​前缀码设计​​:通过首字节前缀区分编码长度
              ③ 编码规则
              Unicode码点范围UTF-8编码格式
              U+0000 - U+007F0xxxxxxx(1字节,与ASCII相同)
              U+0080 - U+07FF110xxxxx 10xxxxxx(2字节)
              U+0800 - U+FFFF1110xxxx 10xxxxxx 10xxxxxx(3字节)
              U+10000 - U+10FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(4字节)
              ④ 编码示例
              字符Unicode码点UTF-8编码(十六进制)
              AU+004141
              U+4E2DE4 B8 AD
              😀U+1F600F0 9F 98 80
              ⑤优势
              • 对ASCII字符高效(1字节)
              • 无字节序问题(不需要BOM)
              • 容错能力强
              • 已成为互联网首选编码(超过98%的网页使用UTF-8)

              (4)三种编码的关系与比较

              ①演进关系:

              ASCII → 扩展ASCII(ISO-8859等)→ Unicode → UTF-8/UTF-16

              ②对比表:

              特性ASCIIUnicodeUTF-8
              诞生时间1960年代1991年1992年
              编码范围0-1270-1,114,111与Unicode相同
              最小单位1字节抽象码点1-4字节
              英语效率100%200%(UTF-16)100%
              中文效率不支持200%(UTF-16)150%
              扩展性极强极强

              (6)实际应用

              ①Java中的编码处理
              // 字符串与字节数组转换
              String str = "中文ABC";
              byte[] utf8Bytes = str.getBytes(StandardCharsets.UTF_8);  // 按UTF-8编码
              String decodedStr = new String(utf8Bytes, "UTF-8");  // UTF-8解码
              
              // 获取字符的Unicode码点
              char c = '中';
              int codePoint = (int)c;  // 获得Unicode码点
              ② 编码识别与转换
              • 文件编码识别:使用工具检测(如Linux的file命令)
              • 编码转换示例(Linux):
                iconv -f GBK -t UTF-8 input.txt > output.txt
              ③编程注意事项
              • 始终明确指定编码(避免依赖平台默认编码)
              • 处理文本文件时注意BOM头(UTF-8通常不需要)
              • 数据库连接设置正确编码(如MySQL的characterEncoding=UTF-8

              理解这些编码标准对于处理国际化文本、网络通信和文件存储至关重要,特别是在开发多语言支持的应用程序时。UTF-8因其高效性和兼容性,已成为现代软件开发的事实标准。


              三、总结

              Java变量是存储数据的基本单元,由​​类型、名称和值​​组成,分为​​基本类型​​(如intdoubleboolean等)和​​引用类型​​(如String、数组)。根据作用域,变量分为​​局部变量​​(方法内)、​​实例变量​​(对象内)和​​类变量​​(static修饰)。命名需遵循规则(如驼峰命名法),final变量为常量。类型转换包括​​自动转换​​(小范围转大范围)和​​强制转换​​(可能丢失精度)。此外,字符编码涉及ASCII(英文)、Unicode(全球字符)和UTF-8(变长编码,兼容ASCII)。合理使用变量和数据类型是编写高效Java程序的关键。

              评论
              添加红包

              请填写红包祝福语或标题

              红包个数最小为10个

              红包金额最低5元

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

              打赏作者

              Yvonne爱编码

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

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

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

              打赏作者

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

              抵扣说明:

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

              余额充值