1.基本数据类型与变量

1.基本数据类型与变量

1.1 基本数据类型

Java属于强类型语言,强类型语言必须为每一个变量声明一种类型。

Java中基本数据类型也称做简单数据类型,包括以下八种

1、整型

byte 、short 、int 、long

2、浮点型

float 、 double

3、字符型

char

4、布尔型

boolean

1.1.1 整型

整型(byte、short、int、long)

整型数据有四种,它们的取值范围不同

byte 的取值范围:-128~127(-2的7次方到2的7次方-1)

short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)

int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)

long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)

1.1.2 浮点型

浮点型包括float和double两种,区别在与精度,float是单精度、32位、符合IEEE 754标准的浮点数;double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数。

float(单精度浮点型)取值范围:3.402823e+38~1.401298e-45

double(双精度浮点型)取值范围:1.797693e+308~4.9000000e-324

java对于浮点型数据默认会使用double。

1.1.3 字符类型

char 类型是一个单一的 16 位 Unicode 字符;

最小值是 \u0000(十进制等效值为 0);

最大值是 \uffff(即为 65535);

char 数据类型可以储存任何字符;

1.1.4 布尔类型

布尔类型只有两个取值,分别是true 、false 。

java默认是false。

1.2 变量

1.2.1 变量类型

java属于强类型语言,所以变量在使用前必须进行声明,以下是几个声明与赋值的示例:

int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "runoob";  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

java有三类变量,分别是:

  • 类变量:独立于方法之外的变量,用 static 修饰。
  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量:类的方法中的变量。
public class var{static int lei_var;    // 类变量String str="hello world";  // 实例变量 public void test(){int local_var =0;  // 局部变量 }
}

局部变量

如果在成员方法中定义一个变量,那么这个变量就被称为局部变量。

局部变量在方法实行时被创建,在方法执行结束的时候被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则出现编译错误。

例如,我们创建一个类文件,在该类中定义getName()方法,在getName()方法中声明int型的局部变量id,并赋值为0,代码如下:

public class BookText(){public String getName(){int id = 0; //局部变量,如果我们把初始值去掉,会报错setName("Java"); //调用类中的其他方法(此类中省略定义方法)return i + this.name;}
}

注意: 类成员变量和成员方法可以统称为类成员。如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量的值为基准。例如,变量id在 getName()方法中值为0,而不是成员变量中id的值。

局部变量的作用域,即局部变量的有效范围,下图描述了局部变量的作用范围。

public void doString(String name){int id = 0;for(int i = 0; i< 10; i++)System.out.println(name + String.valueOf(i));
}

在相互不嵌套的作用域中可以同时声明两个名称和类型相同的局部变量,如下图

public void doString(String name){int id = 0;for(int i= 0; i<10; i++){System.out.println(name + String.valueOf(i)); }for (int i= 0; i <3; i++)System.out.println(i);
}

但是在相互嵌套的区域中不可以这样声明,如果将局部变量id在方法体的for循环中再次定义,编译器将会报错,如图所示。

public void doString(String name){int id = 0;for(int i= 0; i<10; i++)System.out.println(name + String.valueOf(i));for(int i = 0; i<3; i++)System.out.println(i); int id = 7;
}

注意: 在作用范围外使用局部变量是一个常见的错误,因为在作用范围外没有声明局部变量的代码。

实例变量

也叫类成员变量,声明在一个类当中,方法、构造方法和语句块之外。实例变量的生命周期与对象一致。

类变量/静态变量

类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。生命周期与类一致。

1.2.2 类型转换

​ 在平时编程的时候,经常需要将一种数值类型转换为另一种数值类型。

  • 若两个操作数中有一个是double类型,另一个操作数就会转换为double类型;
  • 若其中一个操作数是float类型,另一个操作数也会转换为float类型;
  • 若其中一个操作数为long类型,另一个操作数也会转换为long类型;
  • 否则两个操作数都会转换为int类型。

​ 数值类型的转换可能会发生精度的丢失,例如:123456789是一个大整组,它所包含的位数比float类型所能表达的位数还要多。当它由整型数值转换为float类型时,将会得到同样大小的结果,但却丢失一定的精度。

int n = 123456789;
float f = n;
System.out.println(f);

输出:1.23456792E8

强制类型转换

​ 由上方可看出,在必要时候int类型会自动转换为double类型,而也会有将double类型转换为int类型的需要。这时,就需要通过强制类型转换来实现这个操作。

​ 强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟着待转换的变量名

double x = 9.997;
int nx = (int)x;

​ 在这里,变量nx的值就会变成9。强制类型转换通过截断小数部分将浮点值转换为整型。

​ 若想要对浮点数进行舍入运算,以便得到最接近的整数,就需要用Math.round方法:

double x = 9.997;
int nx = (int) Math.round(x);

​ 现在变量nx的值为10。

1.2.3 常量

常量在程序运行时是不能被修改的。

在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;

虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。

字面量可以赋给任何内置类型的变量。例如:

byte a = 68;
char a = 'A'

byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。

当使用字面量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 例如:

int decimal = 100;
int octal = 0144;
int hexa =  0x64;

和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:

"Hello World"
"two\nlines"
"\"This is in quotes\""

字符串常量和字符常量都可以包含任何Unicode字符。例如:

char a = '\u0001';
String a = "\u0001";

1.3 枚举类型

​ 有时候,变量的取值只在一个有限的集合内,这个变量中很可能保存错误的值。针对这种情况,可以自定义枚举类型。枚举类型包括有限个命名的值。

例如:

销售服装的尺寸有小、中、大和超大四种尺寸。

enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
//声明这种类型的变量
Size s = Size.MEDIUM;

Size类型的变量只能存储这个类型声明中给定的某个枚举值,或null值。null表示这个变量没有设置任何值。

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

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

相关文章

贪吃蛇(三)绘制蛇身

绘制蛇身的逻辑不难&#xff0c;存储上面使用结构体。 第一行和第十九行绘制--其它行&#xff0c;绘制|&#xff0c;分别在头尾处。 (1) 扫描蛇身&#xff0c;如果扫描到则绘制[]。 (2) 扫描蛇身&#xff0c;如果扫描不到则绘制空白。 #include"curses.h"struct Sn…

文件操作入门指南

目录 一、为什么使用文件 二、什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 三、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 四、文件的顺序读写 ​编辑 &#x1f33b;深入理解 “流”&#xff1a; &#x1f342;文件的顺序读写函数介绍&#xff1a; …

爬虫实战案例 -- 爬取豆瓣读书网页内容

进入网站检查信息 , 确定请求方式以及相关数据 找到爬取目标位置 开始敲代码 # 链接网站 def url_link(url):res requests.get(url,headers headers)response res.textparse_data(response)# 爬取信息 def parse_data(data):msg <li\sclass"media\sclearfix…

处理器管理

(1) 为什么程序并发执行会产生间断性特征&#xff0c;并失去封闭性和可再现性&#xff1f; 解&#xff1a; 之所以产生间断性特征是因为多个程序在并发执行时&#xff0c;需要为了完成同一项任务而相互合作&#xff0c;并发执行的程序间的这种相互制约导致了“暂停—执行—暂…

Java Web Day03_CSS样式

一、超级链接伪类 <a href”#”>超级链接</>a:link 未点击前 a:hover 鼠标悬停 a:active 鼠标正在点击&#xff08;左键按着不放&#xff09; a:visited 点击后 加载顺序一般我们是按照&#xff1a;link -> visited -> hover -> active 列表样式 list-…

07-微服务架构之问题和解决方案的探讨

文章目录 前言一、服务发现与治理二、分布式数据管理三、分布式事务管理四、跨服务调用管理五、版本控制与发布管理六、运维管理 总结 前言 在上一章中&#xff0c;我们已经详细探讨了微服务设计的基本原则和步骤。现在&#xff0c;我们将开始实际运用微服务架构&#xff0c;然…

在 CentOS 上使用 Docker 运行 RabbitMQ

在 CentOS 上使用 Docker 运行 RabbitMQ 使用Docker来运行RabbitMQ非常方便&#xff0c;以下是一个简单的步骤&#xff0c;以YAML配置文件方式创建和运行RabbitMQ容器。 构建容器 创建Docker Compose文件 创建一个docker-compose.yml文件&#xff0c;内容如下&#xff1a; …

C# 将 Word 转化分享为电子期刊

目录 需求 方案分析 相关库引入 关键代码 Word 转 Pdf Pdf 转批量 Jpeg Jpeg 转为电子书 实现效果演示 小结 需求 曾经的一个项目&#xff0c;要求实现制作电子期刊定期发送给企业进行阅读&#xff0c;基本的需求如下&#xff1a; 1、由编辑人员使用 Microsoft Word…

KL散度、CrossEntropy详解

文章目录 0. 概述1. 信息量1.1 定义1.2 性质1.3 例子2. 熵 Entropy2.1 定义2.2 公式2.3 例子3. 交叉熵 Cross Entropy3.1 定义3.2 公式3.3 例子4. KL 散度(相对熵)4.1 公式

vue之全局请求loading

场景&#xff1a;我们往往在项目中会因为表单重复提交而烦恼&#xff0c;往往都会想到很高大上的两个词语——防抖、节流。但网上的很多方法都还是不够灵活、通用&#xff0c;那么下面介绍一下我的方法&#xff08;在最后&#xff09; 页面loading 往往都是一个页面写一堆loa…

MyBatis-Plus如何 关闭SQL日志打印

前段时间公司的同事都过来问我&#xff0c;hua哥公司的项目出问题了&#xff0c;关闭不了打印sql日记&#xff0c;项目用宝塔自己部署的&#xff0c;磁盘满了才发现大量的打印sql日记&#xff0c;他们百度过都按照网上的配置修改过不起作用&#xff0c;而且在调试时候也及为不方…

docker查看日志

1、查看容器所有日志 docker logs <容器名称或ID> 2、查看容器最新日志 docker logs -f <容器名称或ID> 3、查看指定时间范围内的容器日志 docker logs --since<开始时间> --until<结束时间> <容器名称或ID> docker logs --since2022-01-0…

mysql的asc和desc全称

原文&#xff1a;http://t.csdnimg.cn/BJ2sUhttp://t.csdnimg.cn/BJ2sU

[AutoSar]基础部分 RTE 02 S/R Port 显式/隐式

目录 关键词平台说明一、显式&#xff08;Explicit&#xff09;和隐式&#xff08;Implicit&#xff09;1.1 显式模式1.1.1code 二、隐式模式2.1 code 三、区别 关键词 嵌入式、C语言、autosar、EcuM、Rte 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语…

字符串逆序输出

逆序输出就是本来abc输出的&#xff0c;然后我想让他输出成cba&#xff0c;那么我们还是要用到for循环&#xff0c;只不过原先是从零开始往上加&#xff0c;这回呢&#xff0c;是从上面往下减 我们观察上面这个图片&#xff0c;我们想要输出olleh&#xff0c;那么我们就要从4开…

2024山东养老展,2024济南养老用品展览会5月27日开幕

飞鲨展览第六届中国&#xff08;济南&#xff09;国际养老服务业展览会&#xff0c;将于2024年5月27-29日举办&#xff1b; CSOLDE 2024第6届中国&#xff08;济南&#xff09;国际养老服务业展览会&#xff08;CSOLDE山东老博会&#xff09; CSOLDE 2024 sixth China (Jinan)…

2023 英特尔On技术创新大会直播 |探索视觉AI的无限可能

2023 英特尔On技术创新大会直播 | 探索视觉AI的无限可能 前言一未来的 AI&#xff1a;释放视觉 AI 真正潜力二AI技术突破、视觉Al挑战及前沿研究创新三全尺度视觉学习全尺度视觉学习示例1.GridConv 实现三维人体姿态估计更高准确率2.KW 预训练及迁移模型性能3.无数据增强稠密对…

Gin之GORM事务(转账操作)

禁用默认事务的操作 为了确保数据一致性,GORM 会在事务里执行写入操作(创建、更新、删除)。如果没有这方面的要求,您可以在初始化时禁用它,这将获得大约 30%+ 性能提升。 // 全局禁用 db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{SkipDef…

基于DSP的IIR数字滤波器(论文+源码)

1.系统设计 在本次基于DSP的IIR数字低通滤波计中&#xff0c;拟以TMS320F28335来作为系统的主控制器&#xff0c;通过ADC0832模数转换芯片来对输入信号进行采集&#xff1b;通过TLC5615来将低通滤波后的信号进行输出&#xff1b;同时结合MATLAB仿真软件&#xff0c;对设计的II…

dart 学习之多个接口 以及mixin学习

如果一个类继承了多个接口&#xff0c;那么需要实现对应的所有方法 abstract class A {printA(); }abstract class B {printB(); }class C implements A, B {overrideprintA() {print("C.a");}overrideprintB() {print("C.b");} }mixin既不是继承也不是接…