Java基础篇--基本数据类型

news2024/11/24 16:40:22

目录

前言:

内置数据类型

类型默认值

示例:

内置数据类型转换

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

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

隐含强制类型转换:

引用类型


前言:

Java中的所有数据类型如下图。

内置数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

  1. 整型(Integer Types):

    • byte:8位有符号整数,范围为-128到127。
    • short:16位有符号整数,范围为-32,768到32,767。
    • int:32位有符号整数,范围为-2,147,483,648到2,147,483,647。
    • long:64位有符号整数,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
  2. 浮点型(Floating-Point Types):

    • float:32位IEEE 754单精度浮点数。
    • double:64位IEEE 754双精度浮点数。
  3. 字符型(Character Type):

    • char:16位无符号Unicode字符,范围从'\u0000'(0)到'\uffff'(65535)。
  4. 布尔型(Boolean Type):

    • boolean:表示真或假的值,只有两个取值:true和false。

类型默认值

下表列出了 Java 各个类型的默认值:

数据类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (or any object)null
booleanfalse

示例:

public class Test {
    static boolean bool;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i;
    static long l;
    static short sh;
    static String str;
 
    public static void main(String[] args) {
        System.out.println("Bool :" + bool);
        System.out.println("Byte :" + by);
        System.out.println("Character:" + ch);
        System.out.println("Double :" + d);
        System.out.println("Float :" + f);
        System.out.println("Integer :" + i);
        System.out.println("Long :" + l);
        System.out.println("Short :" + sh);
        System.out.println("String :" + str);
    }
}

输出结果为:

Bool     :false
Byte     :0
Character:
Double   :0.0
Float    :0.0
Integer  :0
Long     :0
Short    :0
String   :null

内置数据类型转换

自动类型转换和强制类型转换,隐含强制类型转换是Java中的三种类型转换方式。

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

在满足特定条件下,两种数据类型之间的转换可以由编译器自动完成,无需显式声明。这种转换需要满足两个条件:

  1. 数据类型彼此兼容
  2. 目标类型的取值范围大于源类型。

例如:

byte b = 3;
int x = b;

在上述代码中,将byte类型的变量b赋值给int类型的变量x。因为int类型的取值范围大于byte类型,所以编译器会自动进行类型转换,不会发生数据丢失。 

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

当两种类型彼此不兼容,或者目标类型的取值范围小于源类型时,需要显式地声明进行类型转换。

例如:

int a = 1000;
byte b = (byte) a;

在执行此代码时,将会发生数据溢出。由于byte类型的取值范围是-128到127,而1000超出了byte类型的取值范围。因此,强制类型转换将丢失高位信息,结果是b变量将被赋值为 -24,这是1000对256取模的结果(-24 = 1000 % 256)。

在上述代码中,将int类型的变量a强制转换为byte类型的变量b。由于byte类型的取值范围小于int类型,进行强制转换可能会导致数据精度的丢失。因此,需要在转换时使用(byte)进行显式声明,告知编译器进行强制类型转换。

需要注意的是,在进行强制类型转换时,需要谨慎考虑源类型和目标类型之间的取值范围,以避免数据溢出或精度丢失。

  • 隐含强制类型转换:

  1. 整数的默认类型是int:在Java中,整数字面值的默认类型是int。例如,如果您使用字面值直接初始化一个整数变量,编译器会将其默认为int类型。
  2. 小数默认是double类型浮点型:在Java中,小数(包括小数点和科学计数法表示)的默认类型是double。如果要定义一个float类型的小数,必须在数字后面加上F或f后缀,以明确指示它为float类型。(注意,如果没有指定F或f后缀,编译器会将小数默认为double类型。)

例如:

int a = 10; // 这里的整数字面值10被隐含地当作int类型处理
float b = 3.14F; // 这里的3.14被隐含地当作double类型,添加F后缀指定为float类型
System.out.println("a=" + a);
System.out.println("b=" + b);

运行结果:

a=10
b=3.14

引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。

在Java中,我们可以创建自定义的引用类型,比如Site类。在这个例子中,先声明了一个名为site的引用变量,类型为Site。然后使用关键字new创建一个Site对象,并将其地址赋给site变量。

Site site = new Site("Runoob");

上述代码中,Site参考了一个自定义的Site类,该类可能包含有关网站的属性和行为(方法)。在括号中传入的参数"Runoob"是通过构造函数初始化Site对象的。

值得注意的是,在这个过程中,Site类必须是已经定义并存在的,否则会导致编译错误。

通过这样的方式,我们就可以利用引用变量site来操作和访问该Site对象的属性和方法。例如,我们可以调用site对象的方法或访问它的属性:

site.getName();      // 调用Site对象的getName方法
site.setName("Google");    // 修改Site对象的name属性

总结一下,引用类型的变量在声明时指定一个特定的类型,并可以用来引用与之兼容的对象。通过使用引用变量,我们可以操作和访问对象的属性和方法。同时,需要注意引用类型的默认值为null,表示引用变量当前不指向任何对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础练习八(二维数组)

1.装水问题 有一个 异形 容器,用一个 n * n 的二维数组来表示。其中 1 表示容器实心部分, 0 表示空心部分。现使用此容器装水,能装多少水(每个元素都表示一份水,只有有挡板的部分能装水)? publi…

【学习】若依源码(前后端分离版)之 “ 获取角色权限信息及动态路由”

大型纪录片:学习若依源码(前后端分离版)之 “ 获取角色权限信息及动态路由” 获取用户信息获取路由信息 承接上回,我们发现在login请求后面跟了两个请求,今天我们就来了解一下两个请求的含义。 获取用户信息 先看 ‘…

Vulhub之Apache HTTPD 换行解析漏洞(CVE-2017-15715)

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 1、docker-compose build、docker-compo…

yolov5的报错

【定期水一期】 (这个问题很抓马,可以看一下这篇文章:Git Bash 教程!【不是所有人都会用Git】) 一:没有cv2这个模块 解决方案: pip install opencv-python -i http://pypi.douban.com/simple/…

Java用方法实现数组拷贝

Java用方法实现数组拷贝 需求分析代码实现小结Time 需求分析 1.首先,考虑方法是否需要接收数据处理? 该方法的目的是拷贝数组,拷贝哪一个数组呢? 需要调用者传递 所以,参数应该是一个数组 2.接着,考虑方法是…

k8s常用资源管理

目录 Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容器。Pod提供了一种逻辑上的封装,使得容器可以一起共享网络和存储资源 1、创建一个pod 2、pod管理 pod操作 Pod(容器组&#xff…

单机游戏防破解方案解析

近年来,游戏市场用户规模趋于稳定,游戏市场进入了存量时代,各赛道“人满为患”,如何在一片红海中站稳脚跟成了厂商的必修课。 而在快节奏的社会环境下,脱离了网游社交粘性,主打清爽、自由的单机游戏&#…

软考圈地震!2023年下半年软考改为机考,报名时间推迟到9月4日

【1】通知原文 关于2023年下半年计算机软件资格考试有关工作调整的通知 各省、自治区、直辖市及计划单列市、新疆生产建设兵团,香港、澳门计算机软件资格考试考务管理机构: 为全面做好计算机软件资格考试安全防控工作,确保考试公正、公平。现将有关工…

【C语言学习】构造函数求出1到10、20到30、40到50的三个和

求出1到10、20到30、40到50的三个和 代码一&#xff1a;代码复制 #include<stdio.h> int main() {int i;int sum;for(i1,sum0; i<10; i){sum sum i;}printf("%d到%d的和是%d\n", 1, 10, sum);for(i20,sum0; i<30; i){sum sum i;}printf("%d到…

易服客工作室:如何创建有用的内容日历

利用技巧和工具优化您的内容营销效率和效果。创建一个内容日历&#xff0c;您的整个团队都会从中受益&#xff01; 欢迎来到熙熙攘攘、瞬息万变的内容营销世界&#xff0c;在这里&#xff0c;截止日期到来的速度比喝咖啡的猎豹还要快。 现在&#xff0c;想象一下在没有地图、…

家电用PCM板:市场现状研究分析与发展前景预测

家电PCM板属于一种兴起不久的功能性复合材料。属于家电复合外观材料中占比较大的一种。家电复合外观材料主要分为覆膜板&#xff08;VCM&#xff09;系列和有机涂层板&#xff08;PCM&#xff09;系列两大类&#xff1a;VCM系列表面复合各类功能性薄膜&#xff0c;可根据需要实…

湘大 XTU OJ 1214 A+B IV 题解:数位移动的本质+布尔变量标记+朴素模拟

一、链接 AB IV 二、题目 题目描述 小明喜欢做ab的算术&#xff0c;但是他经常忘记把末位对齐&#xff0c;再进行加&#xff0c;所以&#xff0c;经常会算错。 比如1213&#xff0c;他把12左移了1位&#xff0c;结果变成了133。 小明已经算了一些等式&#xff0c;请计算一下…

棒球游戏产业的发展·棒球1号位

棒球游戏产业的发展 1. 棒球游戏产业概述 棒球游戏产业的定义 棒球游戏产业是一个包罗万象的产业集群&#xff0c;涵盖了从基础设施到高端设备&#xff0c;从前沿技术研发到市场推广等各个环节。这个产业的繁荣得益于棒球运动的普及&#xff0c;人们对于棒球游戏的热情以及对…

0基础学C#笔记09:希尔排序法

文章目录 前言一、希尔排序的思想二、使用步骤总结前言 希尔排序可以说是插入排序的一种变种。无论是插入排序还是冒泡排序,如果数组的最大值刚好是在第一位,要将它挪到正确的位置就需要 n - 1 次移动。也就是说,原数组的一个元素如果距离它正确的位置很远的话,则需要与相…

linux cp -rpf指令

cp -rpf #强行递归复制/etc目录到/mist目录中&#xff0c;并保持源目录的权限等信息不变。 有点类似于打patch&#xff0c;不会改变已有的内容。

一次面试下来Android Framework 层的源码就问了4轮

说起字节跳动的这次面试经历&#xff0c;真的是现在都让我感觉背脊发凉&#xff0c;简直被面试官折磨的太难受了。虽然已经工作了七年&#xff0c;但是也只是纯粹的在写业务&#xff0c;对底层并没有一个很深的认识&#xff0c;这次面试经历直接的让我感受到我和那些一线大厂开…

揭秘!亚马逊美国站的热门品类有哪些?

做亚马逊跨境电商&#xff0c;做热门的品类是很最重要的&#xff0c;这样的市场需求量大&#xff0c;产品才能够更好的销售出去&#xff0c;不然的话选择冷门品类&#xff0c;就算你做到了第一&#xff0c;那销量一样不高。 在亚马逊跨境电商很多站点内都有热门品类&#xff0…

gateway做token校验

本文使用springcloud的gateway做token校验 登录的本质&#xff1a;拿用户名和密码 换 token。 token会返回给浏览器&#xff08;存储&#xff09;&#xff0c;当访问的时候&#xff0c;携带token 发起请求。 token校验图 引入redis依赖 <dependency><groupId>or…

vue3多条件搜索功能

搜索功能在后台管理页面中非常常见&#xff0c;本篇就着重讲一下vue3-admin-element框架中如何实现一个顶部多条件搜索功能 一、首先需要在vue页面的<template></template>中写入对应的结构 <!-- 搜索 --><div style"display: flex; justify-content…

HoG特征笔记

简介 HoG&#xff08;Histogram of Oriented Gradient&#xff09;&#xff0c;方向梯度直方图。HoG特征是一种特征描述符。它通过计算和统计图像局部区域的梯度方向直方图来描述特征。 HoG基于的底层原理是图像中局部目标的表象和形状&#xff08;appearance and shape&#x…