Java基础之数据类型

今天来看下Java数据类型知识点。

int num = 1;

这里的int就是整数类型的数据类型,属于基础数据类型。而num其实是一个标识符。

 

什么是标识符

标识符是Java中用来给类、方法、变量等命名的名称

标识符代表的这个数据,就和人的名字一样,你可以叫张三,也可以叫李四,而这里叫num。

数据类型中,标识符一般是跟着数据类型关键字的后面,空格隔开,以声明这个num是个整型int。

 

标识符命名也是有规则的,必须遵循以下规则:

    • 标识符可以由字母(A-Z和a-z)、数字(0-9)、下划线(_)和美元符号($)组成。
    • 标识符不能以数字开头。
    • 标识符是大小写敏感的,即Variable和variable是不同的。
    • 标识符不能是Java的关键字,例如int, class, if等(上篇说了怕混淆)。
    • 标识符不能包含空格或任何除了字母、数字、$和_之外的特殊字符。

而一般我们在命名的时候,除了这些以外还要遵守另外一些规范,不过这些规范不会报错。

    • 比如一般不用汉字来命名。
    • 比如Java类名,一般要以大写字母开始,遵守驼峰命名法(就是首字母大写的方式,比如XingHua,ShuaiDiHeng)。
    • 比如方法名,一般要以小写字母开始,也遵守驼峰命名法(xingHua,woAiNi)。
    • 比如变量名,一般也和类名一样。
    • 比如常量名,一般是全大写,并且以下划线_分割,如(XING_HUA)。

嗯,有一个叫《阿里巴巴开发者规范》的玩意,对这些都有定义,算是一种大家约定,便于阅读代码,有空看看养成编码好习惯。

 

继续来看数据类型

在Java中数据类型分为两种: 基础数据类型引用数据类型

第一种:基础数据类型

基本数据类型是Java语言预先定义好的数据类型,共有8种,包括:

1.整数类型:

    • byte(取值范围:-128~127,)
    • short(取值范围: -32,768~32,767) 
    • int(取值范围:-2^31~2^31-1 (-2,147,483,648~2,147,483,647))
    • long(取值范围:-2^63~2^63-1),声明长整型变量时,需要在数值后面加上L或l。

整数的默认值都是0, long的要加个0L。

2.浮点类型:

    • float(占用4字节(32位),取值范围:大约 -3.4 x 10^38~3.4 x 10^38,默认值: 0.0f),在声明浮点型变量时,需要在数值后面加上F或f。
    • double(占用8字节(64位),取值范围:大约 -1.8 x 10^308~1.8 x 10^308,默认值: 0.0d)

注意浮点数类型由于计算机使用二进制表示小数,可能存在精度损失的问题。因此,在处理钱啊啥的需要高精度的场景时,应避免使用浮点数,而考虑使用BigDecimal类就是有时候1被存成了 0.999999不完的9,又或者 0.0000不完的1。了解即可,我们以后会学Java自带的BigDecimal类来处理数字运算。

3.字符类型:

      • char(取值范围: 0~65,535(Unicode码点),默认值: ‘u0000’ (null字符)

这个有意思哈,第一篇我们说Unicode码点字符包含了世界上所有的符号。中国汉字分布在Unicode的几个区间内,主要在以下两个主要区间:

      • 基本汉字包含了最常见的汉字,包括简体和繁体中文,在Unicode码点范围是: U+4E00 到 U+9FFF 。
      • 扩展ABCDEF区包含了一些不常用的汉字、部首和古汉字。

4.布尔类型:

boolean(取值范围: true或false。用于表示真或假的值。默认值:false)

代码练习下:

public class Study{ public static void main(String[] args) { int a = 1; double b = 1.2; String s = "hello"; System.out.println("a:"+a); System.out.println("b:"+b);        System.out.println("s:"+s); }}

础数据类型中存的就是值,比如int a = 1,内存中存的就是1。

public class Study{    public static void main(String[] args) { // 测试基础值传递 int num1 = 10; int num2 = num1; // 将num1的值复制给num2,num2得到了num1值的一个副本 // 接下来改变了num2的值,num1的值不会受到影响,因为基础数据类型存的就是自己的值。 num2 = 20; System.out.println(num1); // 输出 10 System.out.println(num2); // 输出 20

        // 测试String类型引用传递         String str1 = "zhangsan";        String str2 = str1;        str2 = "lisi";// str1也不发生变化,因为String中特殊,每一个String在内存中都是一个不可改变的值        System.out.println("str1 :"+str1 );// zhangsan,str1 依然指向 "zhangsan"        System.out.println("str2 :"+str2 );// lisi     }}

第二种就是引用数据类型

引用数据类型是指向对象实例的引用,主要包括类(Class)、接口(Interface)和数组(Array)类型。引用数据类型的默认值为null。

1.String

在Java中内置的字符串类String就是一个Java预定义的引用类型。

String str = "这是一个字符串";

        String是个特殊的引用类型,字符串在内存中是不会改变的,每次定义都是一个,不可更改,比如定义了”zhangsan”,修改为”zhanger”。实际上会创建一个新的String对象,而不是修改原始对象。

str存储的就是指向 “这是一个字符串这个字符串的一个内存地址。

上面代码一起贴了!

2.接口

接口就比如集合List,定义一个字符串类型的集合

List<String> myStrList = new ArrayList<>();

以后细细研究这个,不急。

3.数组

数组是一种数据结构,用于存储固定数量的元素,这些元素必须是相同类型。数组是通过方括号[]来声明的。

int[] numbers = {1, 2, 3, 4, 5, 666};

 

注意上面int[]就规定了后面的{}中必须是整形int,不能有别的类型。

4.自定义类型

上面都是Java内置的预定义类型,我们也可以自定义类型,比如我们弄过一个动物类型并实例化了动物猴子:

// 定义动物类class Animal{ private String name; public Animal(){}}// 以Animal类,实例化一知猴子Animal monkey = new Animal();

这个Animal就是我们自定义的引用类型,而monkey就是标识符。

这个monkey不像基础数据类型那样存储的是值,而存的其实是一个地址,代码参考上面的String,但是,它可不像String一样不可变,所以会存在引用传递引起值被更改的问题,后面我们学了类以后再研究哈。

变量

变量就是用来存储数据的一个标识符,变量可以在声明时初始化,也可以先声明后初始化。

// 先声明后初始化:int number// 声明一个整型变量numbernumber = 10// 初始化变量number为10String name; // 声明一个字符串变量namename = "张三"// 初始化变量name为"张三"

// 声明时初始化:double pi = 3.14159; // 声明并初始化一个双精度浮点型变量pi

 

注意在Java中,变量必须先声明后使用,且必须在使用前初始化(赋值)。

Java中的变量有作用域,这意味着它们只在声明它们的块(如方法或代码块)中可见和可用。算了,不想说了,留着学完类以后和全局变量、局部变量结合作用域一起学吧。

今天知道声明变量要先用数据类型声明,然后初始化数据,再使用!

上面说来数据类型分为基础数据类型和引用数据类型两种,基础的是Java内置的那8个,各有各的区间和默认值。引用的话,内置了String,但是String特殊,是个不可变的字符串。另外还有数组和接口类型。最后说了用来存储数据的标识符:变量。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/78207.html

(0)
guozi's avatarguozi
上一篇 2024年5月29日 下午4:07
下一篇 2024年5月29日 下午4:08

相关推荐

  • 速戳,小白也能看懂TCP/IP 协议详解

    深入探讨TCP/IP协议 简介   在信息技术飞速发展的今天,网络已成为人类社会不可或缺的部分。实现网络中计算机相互通信的关键之一便是TCP/IP协议。作为互联网的基础,TCP/I…

    2024年5月25日
    0
  • CDN 如何绑定虚拟主机

    在当今互联网技术高度发达的时代,CDN(Content Delivery Network,内容分发网络)已成为提升网站性能和用户体验的重要手段。而将 CDN 与虚拟主机进行绑定,则…

    CDN资讯 2024年5月19日
    0
  • LSM Tree 深度解析

    我们将深入探讨日志结构合并树,也称为LSM Tree:这是许多高度可扩展的NoSQL分布式键值型数据库的基础数据结构,例如Amazon的DynamoDB、Cassandra和Scy…

    2024年4月10日
    0
  • 高防CDN的性能如何评估

    在当前的互联网环境中,随着网络攻击的频繁发生,高防CDN(内容分发网络)作为一种重要的安全防护手段,受到了越来越多企业的青睐。然而,如何准确评估高防CDN的性能,成为了企业在选择和…

    2024年5月5日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注