首页 > 编程语言 >java数据类型

java数据类型

时间:2023-04-13 19:56:41浏览次数:36  
标签:字符 java 变量 int 数据类型 Java byte 标识符

标志符

标志符就是类名、方法(函数)名、变(常)量名、包名等的名字。 Java规定,标识符是由字母、下划线(“”)或美元符“$”)开头,后面跟0个或多个字母、下划线(“”)、美元符(“$”)或数字组成的符号序列。 根据此定义,下列单词都是合法的标识符: i count num day Scoll Lock $a789 a89 Java Int 而下列标识符是不合法的: abc&# a3*4 int b-c #ab class   Java是区分大小写的。int是关键字,而 Int是合法的用户标识 Java的标识符可以是任意长度,但建议不要取得太长,最好不要超过4个单词。因为太长的名字容易输入错误,降低编程效率。   另外,虽然JDK1.5支持用中文给变量命名,不过很少有人采用中文变量名。一个直观的原因就是在中文输入法下,标点符号也是中文的,但Java只支持西文的标点符号,这样输入容易出错。

基本类型

包括整型、浮点型、布尔型、字符型

整型(byte、short、int、long)

Java中的整型数据,是以补码的形式存放在内存中的。Java中没有无符号型整数。 字节型 byte 1字节(8位) 默认值是 0 -128~127 短整型 short 2字节 默认值是 0 -32768~32767 基本型 int 4字节 默认值是 0 -2,147,483,648(-2^31)~ 2,147,483,647(2^31 - 1) 长整型 long 8字节 默认值是 0L -9,223,372,036,854,775,808(-2^63)~ 9,223,372,036,854,775,807(2^63 -1)

浮点型(float、double)

Java中的浮点数,是按照IEEE-754标准来存放的。 单精度数 float 4字节 有效数字7个十进制位 默认值是 双精度数 double 8字节 有效数字15~16个十进制位 默认值是 字符型(char) Java中的字符型用char来表示。它用两个字节(16个位)来存放个字符。而且存放的并不是 ASCII码,而是Unicode码。默认值为 'u0000',最小值是 布尔型(boolean) 可取true和false两个值,默认值为 false。 单个的boolean 类型变量在编译的时候是使用的 int 类型。而对于boolean 类型的数组时,在编译的时候是作为byte array来编译的所以boolean 数组里面的每一个元件占一个字节,这是确定的  

常量

字面常量

直接的数字或字符串这种量,如 38

整型字面量

如果只有数字[0-9],则是int型的。-128~127可以赋值给byte、short、int型变量,-32768~32767可以赋值给short、int型变量,-2,147,483,648~2,147,483,647可以赋值给int型变量。即根据字面量大小会进行自动类型识别。 如果是数字[0-9][lL] 则是long型的。 如果数字以0开头,则是8进制,以0x或0X开头是十六进制。 如 089表示八进制89 0x78表示十六进制78

实型字面量

如果包含[.eE]则是double型的,包含[.eE]并以[fF]结尾则是float型的。 如 1E5表示1*10^5 0.33 .78 123. 注意,E前面必须有数字,E后面必须是整数。 浮点数的有效位数是有限的,float型只有7个有效位,double型只有15~16个有效位,超过部分会自动做四舍五入处理。请看下例。

 

 所以字面量中 1234567.456F 和 1234567.45678833F 并没有什么区别,最终都会被识别为1234567.4F。

浮点数并不能准确被存储,如1.3在内存中可能是1.299999也可能是 1.30000001,所以可能(不绝对) 1.3 !== 1.3

字符型字面量

字符常量是用单引号(即撇号)括起来的一个字符。如'a'、'D'都是字符常量。 某些特殊的字符,比如回车符、换行符、退格符等,无法直接用单引号括起来。为了表示这些字符,Java提供了一种特殊形式的字符常量,就是以一个“\”开头的字符序列,“\”后面的字符不再是原来的含义,所以又被称为转义序列换码序列。如 '\n'表示换行,'\r'表示回车,另外还有八进制和十六进制的表示方法,如下: \ddd 八进制字符 (ddd) \uxxxx 16进制Unicode字符 (xxxx) 字符型的变量存储时,就是一个无符号型short类型的整数,即范围为0~65535。

字符串型字面量

Java的字符串常量也是包含在两个引号之间的字符序列(可以是任何 Unicode 字符)。字符串本质上是对象类型。 如 "hello 中国"

布尔型字面量

即 true 和 false。  

命名常量

final int FEMALE=2; // 用 final 修饰的是常量,定义时必须有初始值,不可再修改 习惯上,符号常量名用大写(用_线分割单词),普通变量名用小写(用驼峰分割单词),以示区别。建议读者使用符号常量以提高程序的可读性和可维护性。

变量

局部变量

局部变量是指定义在方法体内的变量或者方法体中的语句块中的变量。 定义变量的一般格式是: 类型名 标识符1[=初始值1,标识符2=[初始值2,[...]]] 实际上会被编译成:
类型名  标识符1;
标识符1 = 初始值1;
类型名 标识符2;
标识符2 = 初始值2;
....
在 Java中,所有用到的变量都要“先定义,后使用” 一个局部变量在引用之前,必须要显示地初始化,否则将无法通过编译。注意,只要在第一次取值前初始化即可,不用定义变量时就必须初始化。

作用域

它只在定义它的方法中有效,在此方法以外,是无法使用这些变量的。 方法中定义的变量,从定义变量的这一行开始,到本方法的结尾。 语句块中定义的变量,其作用域从定义的行到块语句末尾。 在同一个作用域中,不允许定义两个同名的变量(即使类型不同也会报错)。 不同作用域中可以定义同名变量,程序会读取最近的作用域的那个变量。

成员变量

 

数据类型的转换

基本数据类型,除了布尔类型外,其余类型的数据是可以混合在起运算的。 例如:“10+a+1.5-5.123*'b'”是合法的。不过在运算时,如果某个运算符两侧的数据类型不一致,就必须要转换成同一类型,然后才能运算。 无论是扩展转换还是缩减转换, 都是产生了原数据的一个副本转换的结果不会对原赘据有任何的影响。

自动类型转换(扩展转换)

由系统自动进行的类型转换,不会损失精度。转换的基本原则是: 范围小的转换成范围大的,精度小的转换成精度大的。

 

 当双目运算符左右两侧的变量(常量)类型不一致时,必须先转换为一致才可进行运算。

取上图中,两种类型的最近的共同祖先类型。可以是赋值运算符、加号...。 如 byte+char ==> int + int byte+short ===> short + short

强制类型转换(缩减转换)

必须由程序员手动指定的类型转换,这种转换多数时候可能会损失精度。

 

 当需要转换为另 一种类型时,按上图中的方向转换时,都需要进行强制转换。

int a; byte c = (byte) a; // 在变量左侧加要转换的目的类型,注意,(byte)的括号是必须的,不写的话会报错 (byte) (a + b); // 对于表达式,可以用括号括起来 Java在根据程序员的指令进行缩减转换的时候,有一套比较复杂的规则。 原则上是在保证符号的情况下,丢弃掉高字节(靠左边的字节)的内容。 但这么做并不能保证转换的结果符合程序员的预期效果。 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
  • 不能对boolean类型进行类型转换。
  • 2. 不能把对象类型转换成不相关类的对象。
条件是转换的数据类型必须是兼容的。  

标签:字符,java,变量,int,数据类型,Java,byte,标识符
From: https://www.cnblogs.com/xiafl/p/17316151.html

相关文章

  • java -- 线程
    线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:是进程中的一个执行单元,负责当前进程中程序的执......
  • Java POI 拆分excel单元格并填充内容
    publicvoidtest(Sheetsheet){intnumMergedRegions=sheet.getNumMergedRegions();for(intz=0;z<numMergedRegions;z++){CellRangeAddressmerge=sheet.getMergedRegion(z);//System.out.println("Numbe......
  • 【Java】wait、await、sleep的区别和联系
     (200条消息)Java之wait、await、sleep的区别和联系_javawait和await区别_wotu__的博客-CSDN博客 一、wait()notify()notifyAll()调用wait()使得线程等待某个条件满足,线程在等待时会被挂起,当其他线程运行时使得这个条件满足时,其他线程会调用notify()或者notifyAll()来唤......
  • Java | 一分钟掌握JDK命令行工具 | 2- 分类
     作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我!JDK命令行工具分类命令行工具按照功能可以分为以下几个重要的大类:主要工具主要工具是用来完成主要工作的(废话),比如:编译、反编译、打包等等,以下是常见的:javac:您可以使用......
  • Java GC基础知识
    1对象存活判断1.1引用计数在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的引用计数法的缺陷:publicclassReferenceCountingGC{publicObjectinstance=null;priv......
  • 数据类型和转换
    1.字符串转换-只要是被引号引起来就是字符串隐式转换:js自己做的类型转换1+'1'=='1'+'1'拼接='11'隐式转换:'2'-'1'==2-1=12.转换数字的规则:如果一个值可以为真,则可以转成数字1,true转成1,false转成0;""转成0,非空的字符串如果内容是数字可以转数字,否则就是nan;如......
  • Java基础
    cmd打开Java代码//代码编译javacHello.java//运行编译码javaHelloJDK、JRE和JVM的关系JDK=JRE+开发工具集(如Javac、java编译工具等)JRE=JVM+JavaSE标准类库只测试只需要JRE即可Java八大数据类型数据转换自动转换规则容量大的类型能......
  • Java 程序连接数据库服务端程序的助手类
    username=用户名password=密码jdbcURL=jdbc:mysql://IP地址:端口号/数据库名?useUnicode=true&useSSL=false&amp&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=truejdbcDriver=com.mysql.cj.jdbc.Driver import......
  • Javascript内置对象
    内置对象(常用方法)Math(不是构造函数,直接调用)/**@file封装自己的myMath对象@authorlxs/varmyMath={PI:3.1415926,/*@description求最小值@returns{Number}max@examplemax(3,5)//5/max:function(){varmax=arguments[0];for(vari=1;i<arg......
  • 【Java技术专题】「盲点追踪」突破知识盲点分析Java安全管理器(SecurityManager)
    前提介绍Java安全应该包括两方面的内容,一是Java平台(即是Java运行环境)的安全性;二是Java语言开发的应用程序的安全性。由于我们不是Java本身语言的制定开发者,所以第一个安全性不需要我们考虑。其中第二个安全性是我们重点考虑的问题,一般我们可以通过安全管理器机制来完善安全性,安全管......