首页 > 编程语言 >Java 数据类型和变量的完整指南

Java 数据类型和变量的完整指南

时间:2023-08-10 17:03:08浏览次数:48  
标签:指南 Java String int 数据类型 字符串 byte

目录

一、字面常量

1.1什么常量?

1.2常见的六种常量类型

二、数据类型

2.1什么是数据类型?

2.2基本数据类型:

2.3引用数据类型

三、变量

3.1什么是变量?

3.2变量的命名规则

3.3变量的作用域

3.4变量的被final修饰

四.类型转换

4.1什么是类型转换?

4.2自动类型转换

4.3强制类型转换

4.4注意事项

4.5类型提升

五.字符串类型

5.1什么是Java字符串类型?

5.2如何创建和使用字符串?

5.3常见的字符串操作

5.3字符串与不同类型之间的转换

声明:Java的数据类型与变量

在Java中,数据类型是指变量存储数据的类型,Java支持多种基本数据类型,包括整型、浮点型、字符型、布尔型等等。对于不同的数据类型,Java也提供了不同的字面常量来表示它们的值。在使用Java进行编程时,了解数据类型及其特点是非常重要的。

一、字面常量 1.1什么常量? 字面常量是指程序中直接使用的常量值,不需要进行计算或处理。在Java中,字面常量包括以下几种类型:

1.2常见的六种常量类型

  1. 整型常量 整型常量表示整数值,可以用十进制、八进制或十六进制来表示。

int decimalValue = 10; // 十进制 int octalValue = 012; // 八进制 int hexValue = 0xA; // 十六进制 2. 浮点型常量 浮点型常量表示实数值,包括单精度浮点型和双精度浮点型。

float floatValue = 3.14f; // 单精度浮点型 double doubleValue = 3.14; // 双精度浮点型 3. 字符常量 字符常量表示单个字符,用单引号括起来。

char charValue = 'a'; // 字符常量 4. 字符串常量 字符串常量表示多个字符组成的字符串,用双引号括起来。

String stringValue = "Hello, World!"; // 字符串常量 5. 布尔型常量 布尔型常量表示真或假,用true和false关键字表示。

boolean boolValue_1 = true; // 布尔型常量 boolean boolValue_2 = false; // 布尔型常量 6. null常量 null常量表示空对象引用。

String strValue = null; // null常量

二、数据类型 2.1什么是数据类型? Java的数据类型分为两类:基本数据类型和引用数据类型。基本数据类型包括整型、浮点型、字符型和布尔型,它们都是Java语言提供的内置类型。引用数据类型包括类、接口、数组等,它们都是在程序中自定义的类型。

2.2基本数据类型:

  1. 整型 整型数据类型包括byte、short、int和long四种类型,它们分别占用1、2、4和8个字节,并且有不同的取值范围。如下表格:

整型数据类型 类型 占用空间 取值范围 byte 1字节 -128~127 short 2字节 -32768~32767 int 4字节 -2147483648~2147483647 long 8字节 -9223372036854775808~9223372036854775807 2. 浮点型 浮点型数据类型包括float和double两种类型,它们分别占用4和8个字节,并且有不同的精度和取值范围。

float f = 3.14f; double d = 3.14; 浮点数据类型 类型 占用空间 精度范围 float 4字节 精度为6~7位 double 8字节 精度为15~16位 3. 字符型 字符型数据类型char占用2个字节,用于表示Unicode编码的字符。

char c = 'a'; // 字符型数据类型 4. 布尔型 布尔型数据类型boolean只有两个取值:true和false,占用1个字节。

boolean b1 = true; // 布尔型数据类型 boolean b2 = false; // 布尔型数据类型

2.3引用数据类型 Java中的引用数据类型包括类、接口、数组、枚举、注解等。这些类型的数据都是通过引用方式存储在堆内存中的。

类是面向对象编程的基础,Java中的所有类都是引用数据类型。类可以包含属性、方法和构造函数等成员,通过创建对象来使用类的成员。

public class lhy { public static void main(String[] args) { class Person { String name; int age;

void sayHello() {

System.out.println("Hello, my name is " + name + ", I'm " + age + " years old."); } }

Person p = new Person(); // 创建Person类的对象p
    p.name = "Tom";
    p.age = 25;
    p.sayHello(); // 输出:Hello, my name is Tom, I'm 25 years old.

}

} 输出如下:

  1. 接口

接口是一种抽象的类型,它定义了一组方法的签名,但没有实现这些方法的具体代码。接口可以被类实现,一个类可以实现多个接口。

interface Flyable { void fly(); }

class Bird implements Flyable { public void fly() { System.out.println("I'm a bird, I'm flying."); } }

Bird b = new Bird(); // 创建Bird类的对象b b.fly(); // 输出:I'm a bird, I'm flying. 输出如下:

  1. 数组

数组是一种存储多个相同类型数据的容器,Java中的数组可以存储任何类型的数据,包括基本类型和引用类型。

int[] nums = new int[]{1, 2, 3}; // 声明一个int类型的数组nums String[] names = new String[]{"Tom", "Jerry", "Alice"}; // 声明一个String类型的数组names 4. 枚举

枚举是一种特殊的类型,它限定了变量只能取枚举中定义的值,可以避免使用数字或字符串表示状态等情况下的错误。

enum Color { RED, GREEN, BLUE }

Color c = Color.RED; // 声明一个Color类型的变量c 5. 注解

注解是一种用于提供元数据信息的标记,它可以用于类、方法、变量等元素上,用于描述它们的属性和特征。注解可以通过反射机制获取

除了以上提到的引用数据类型之外,Java还有许多其他的数据类型,如集合、映射等,这些数据类型在Java的开发中也是非常常用的。在实际开发中,开发人员需要根据具体的业务需求选择合适的数据类型来完成开发任务。

三、变量 3.1什么是变量? 在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的 计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。

定义变量的语法格式为:

数据类型 变量名 = 初始值; public class lhy { public static void main(String[] args) { int a = 10; // 定义整形变量a,a是变量名也称为标识符,该变量中放置的值为10

double d = 3.14;
    char c = 'A';
    boolean b = true;
    System.out.println(a);
    System.out.println(d);
    System.out.println(c);
    System.out.println(b);
    a = 100; // a是变量,a中的值是可以修改的,注意:= 在java中表示赋值,即将100交给a,a中保存的值就是100
    System.out.println(a);

// 注意:在一行可以定义多个相同类型的变量 int a1 = 10, a2 = 20, a3 = 30; System.out.println(a1); System.out.println(a2); System.out.println(a3);

}

}

如下所示:

3.2变量的命名规则 变量的命名需要遵循一定的规则,变量名必须由字母、数字、下划线或美元符号组成,不能以数字开头,且不能是Java的关键字。

int myNumber; // 正确的变量名 double $price; // 正确的变量名 char _firstChar; // 正确的变量名 boolean isOK; // 正确的变量名 String 1stString; // 错误的变量名,不能以数字开头 3.3变量的作用域 变量的作用域是指变量在程序中可访问的范围,Java中的变量具有作用域,即变量只在声明它的代码块中可见。

public void foo() { int a = 10; // 只在foo()方法中可见 if (a > 5) { int b = 20; // 只在if语句块中可见 } System.out.println(a); // 可以访问变量a System.out.println(b); // 错误,无法访问变量b } 3.4变量的被final修饰 在Java中,变量还可以被final修饰,表示该变量是一个常量,一旦赋值就不能再被改变。

final int a = 10; // 声明一个常量a,不能再被改变 final double PI = 3.14; // 声明一个常量PI,不能再被改变 四.类型转换 4.1什么是类型转换? Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有较严格的校验 . int a = 10; long b = 100L; b = a; // 可以通过编译 a = b; // 编译失败 在 Java 中,当参与运算数据类型不一致时,就会进行类型转换。 Java 中类型转换主要分为两类:自动类型转换 (隐式) 和 强制类型转换 (显式) 。 自动类型转换

4.2自动类型转换 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。 特点: 数据范围小的转为数 据范围大的时会自动进行 。 如下代码:

System.Out.println(1024); // 整型默认情况下是int System.Out.println(3.14); // 浮点型默认情况下是double int a = 100; long b = 10L; b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值 a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全 float f = 3.14F; double d = 5.12; d = f; // 编译器会将f转换为double,然后进行赋值 f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全 byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失 4.3强制类型转换 强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。 如下代码:

int a = 10; long b = 100L; b = a; // int-->long,数据范围由小到大,隐式转换 a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败

float f = 3.14F; double d = 5.12; d = f; // float-->double,数据范围由小到大,隐式转换 f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败

a = d; // 报错,类型不兼容 a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃

byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换 byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错

boolean flag = true; a = flag; // 编译失败:类型不兼容 flag = a; // 编译失败:类型不兼容 4.4注意事项

  1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型
  2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失
  3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查
  4. 强制类型转换不一定能成功,不相干的类型不能互相转换 4.5类型提升 什么是类型提升?

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。 如下所示

  1. int与long之间:int会被提升为long

int a = 10; long b = 20; int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据 long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long 2. byte 与 byte 的运算 byte a = 10; byte b = 20; byte c = a + b; System.out.println(c);

// 编译报错 Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b; ^ 解析:

byte 和 byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误 . 由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据 . 为了硬件上实现方便 , 诸如 byte 和 short 这种低于 4 个字节的类型 , 会先提升成 int, 再参与计算。 正确的写法: byte a = 10; byte b = 20; byte c = (byte)(a + b); System.out.println(c); 小结:

  1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
  2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算. 五.字符串类型 5.1什么是Java字符串类型? 在 Java 中,字符串是一个对象,它是由一系列字符组成的,可以包含字母、数字、符号等。Java 字符串类型是不可变的,这意味着一旦创建了一个字符串对象,就不能对其进行更改。如果需要修改一个字符串,需要创建一个新的字符串对象。

5.2如何创建和使用字符串? 要创建一个字符串对象,可以使用字符串字面量或字符串构造函数。字符串字面量是由一对双引号括起来的字符序列,例如:

String str1 = "Hello, World!"; 字符串构造函数可以通过传递一个字符数组或另一个字符串来创建一个新的字符串对象,例如:

char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str2 = new String(charArray); String str3 = new String("Hello"); 要访问字符串中的字符,可以使用字符索引或字符串方法。例如,要获取字符串中的第一个字符,可以使用以下代码:

String str1 = "Hello, World!"; char firstChar = str1.charAt(0); 5.3常见的字符串操作 Java 提供了许多用于操作字符串的方法,包括以下几个常见的例子:

字符串比较

要比较两个字符串是否相等,可以使用 equals() 方法,例如:

String str4 = "Hello"; boolean isEqual = str3.equals(str4); // true 字符串连接

可以使用加号运算符或 concat() 方法将两个字符串连接起来,例如:

String str5 = "Hello"; String str6 = "World"; String str7 = str5 + " " + str6; // "Hello World" String str8 = str5.concat(" ").concat(str6); // "Hello World" 字符串长度

可以使用 length() 方法获取字符串中字符的数量,例如:

int length = str1.length(); // 13 字符串截取

可以使用 substring() 方法获取字符串的一个子串,例如:

String subStr = str1.substring(0, 5); // "Hello" 字符串转换

可以使用 将toUpperCase() 和 toLowerCase() 方法字符串转换为大写或小写形式,例如:

String str9 = "Hello"; String str10 = str9.toUpperCase(); // "HELLO" String str11 = str9.toLowerCase(); // "hello" 5.3字符串与不同类型之间的转换 字符串转换为整数

可以使用 Integer.parseInt() 方法将字符串转换为整数。例如:

String str = "123"; int num = Integer.parseInt(str); 字符串转换为浮点数

可以使用 Double.parseDouble() 方法将字符串转换为浮点数。例如:

String str = "3.14"; double num = Double.parseDouble(str); 整数或浮点数转换为字符串

可以使用 String.valueOf() 方法将整数或浮点数转换为字符串。例如:

int num = 123; String str1 = String.valueOf(num);

double num2 = 3.14; String str2 = String.valueOf(num2);

字符串转换为字符数组

可以使用 toCharArray() 方法将字符串转换为字符数组。例如:

String str = "Hello"; char[] charArray = str.toCharArray(); 字符数组转换为字符串

可以使用 String(char[] data) 构造函数将字符数组转换为字符串。例如:

char[] charArray = {'H', 'e', 'l', 'l', 'o'}; String str = new String(charArray);

———————————————— 版权声明:本文为CSDN博主「小李同学_LHY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/LHY537200/article/details/132050257

标签:指南,Java,String,int,数据类型,字符串,byte
From: https://blog.51cto.com/u_16222039/7037574

相关文章

  • Java入门学习——day1
    1.首先创建一个空项目(路径里最好不要有中文):  2.然后创建Java工程(路径里最好不要有中文):  3.创建包(it.com.hello)可以跟我一样,也可以自己取名(不要用中文),这个构建就是it-->com-->hello,如下图:  4.创建Java文件(HelloWorld)......
  • JavaScript常用校验类方法
    #前端常用校验类工具方法#邮箱exportconstisEmail=(s)=>{return/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}123#手机号码exportconstisMobile=(s)=>{return/^1[0-9]{10}$/.test(s)}123#电话号码e......
  • 【专题】2023全民学习力洞察与数字营销指南报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33404原文出处:拓端数据部落公众号学习能力是将知识资源转化为知识资本的能力。它包括对所学内容的兴趣和热情,有助于更深入理解和掌握知识,提高个人的认知和思维能力。阅读原文,获取专题报告合集全文,解锁文末158份学习教育行业相关报告。教育和娱乐......
  • .NET JIT脱壳指南与工具源码
    title:.NETJIT脱壳指南与工具源码date:2019-08-08updated:2023-04-09lang:zh-CNcategories:-[.NET逆向]tags:-.NET-逆向工程-脱壳-JITtoc:true文章首发于https://wwh1004.com/net-jit-unpack-guide-and-source/本文介绍了.NET下的JIT层加密点与脱壳技巧......
  • java根据excel模板填充数据并导出
    部分代码片段<!--导出导入excel--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.12</version></dependency>......
  • java面向切面编程---AOP之环绕通知
    packagecom.xlkh.bigscreen.common.aspect;importcom.alibaba.fastjson.JSON;importcom.fasterxml.jackson.databind.ObjectMapper;importcom.xlkh.bigscreen.common.utils.RedisDeviceUtil;importcom.xlkh.bigscreen.service.bigscreen.BigscreenRedisService;imp......
  • tomcat10 javaweb webapp jstl的maven依赖库配置
    1.在pom.xml中配置,可能不是最新版,在idea中可能会报黄线,但是可以正常使用<dependencies><!--https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api--><dependency><groupId>jakarta.servlet</groupId>......
  • Java和线程的一些讨论
    Java语言及Java的多线程机制,其中:第一部分是对Java简介,包括Java产生的背景和经过、Java的特点和应用方向、Java发展趋势.第二部分介绍面向对象的Java编程方法、及与C++语言作了一些比较.包括如何编写JavaApolet、在Applet中如何实现各种常用对象、以及使用Java实现高级编程(......
  • Java修改jar包中个别文件并重新打包
    前言本文将记录在开发中,如果遇到需要修改jar包中内容的情况下该如何解决。以需要修改下图的ueditor-1.1.2包包及文件为例:已明确需要修改如下三个文件:一、新建项目在明确需要修改哪几个文件之后,可以新建一个java项目,并且路径跟jar包一致(jar包里的内容可以用jd-gui查看)接......
  • 用户空间协议栈设计和netmap综合指南
    本文分享自华为云社区《用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度》,作者:LionLong。协议概念1.1、七层网络模型和五层网络模型应用层: 最接近用户的一层,为用户程序提供网络服务。主要协议有HTTP、FTP、TFTP、SMTP、DNS、POP3、DHCP等。表示层: 数据的表示......