Java 变量及基本数据类型
1.Java变量
1.1 变量的概念
- 内存中开辟的一块存储空间,用于存放运算过程中需要用到的数据;
- 该区域有自己的名称(变量名)和类型(数据类型);
- 该区域的数据可以在同一类型范围内不断变化;
1) 为什么需要定义变量
- 用来不断的存放同一类型的常量,并可以重复使用;
2) 定义变量的格式
- 数据类型 变量名 = 初始化值;
3)变量使用范围
- 变量的作用范围(一对{}之间有效,"就近原则");
1.2 变量的使用
1)声明
int a ; //表示声明一个整型变量,名为a; int b,c,d; //表示声明三个整型变量,名为b,c,d;
2)命名
- 只能包含数字、字母、_(下划线)和$(美元符号),并且不能以数字开头;
- 严格区分大小写
- 不能使用关键字
- 可以中文命名,但不建议
- 命名规则:建议“驼峰命名法”、“见名知意”,如定义个变量表示学生成绩:studentScore
//演示错误的命名
int 123abc; //不能以数字开头
int ab*5; //不能使用除了_和$之外的其它特殊字符
int break; //不能使用关键字
int score = 90;
System.out.println(Score); //编译错误,Java大小写严格区分 //演示正确的命名
int abc12;
int 变量; //正确但是不建议中文命名
int _12$a;
int MyName;
int myName;
3)初始化
声明的同时初始化:
int a = 250;
先声明后初始化:
int a;
a = 250;
int a,b=5; //声明了变量a和b,并给b赋值为5,a没有赋值
4)使用
- 对变量操作就是对它所存的那个数进行操作。
int a = 5; //声明变量a并赋值为5;
int b = a+10; //声明变量b,取出a的值5,加上10后,将和赋值给b
System.out.println(b); //输出b的值是15
a = a+b; //取出a的值5,再取出b的值15,再把两个数的和重新赋值给a
System.out.println(a); //输出a的值是20
- 变量的操作必须与数据类型匹配
int a = 3.14;
//报错:类型不匹配,Type mismatch: cannot convert from double to int
- 变量在使用之前必须声明并初始化
System.out.println(m); //编译错误,m未声明 int m;
System.out.println(m); //编译错误,m未初始化
2.基本数据类型
Java语言有8种基本数据类型,分别是用于存储整数、小数、字符和布尔类型数据,分别是:整数类型(包含byte、short、int、long)、小数类型(包含float、double)、char类型和boolean类型(false、true)。

|
数据类型 |
字节空间 | 使用场景 |
| byte | 1字节(8位) | 存储字节数据(较常用) |
| short | 2字节(16位) | 兼容性考虑(很少用) |
| int | 4字节(32位) | 存储普通整数(常用) |
| long | 8字节(64位) | 存储长整数(常用) |
| float | 4字节(32位) | 存储浮点数(不常用) |
| double | 8字节(64位) | 存储双精度浮点数(常用) |
| char | 2字节(16位) | 存储一个字符(常用) |
| boolean | 1字节(8位) | 存储逻辑变量(true、false)(常用) |
2.1 int类型
整型,占4个字节(32位),最大表示范围:-2^31~2^31-1,-2147483648~2147483647,大概21亿~-21亿。整数直接量默认为int型,但不能超出范围,超范围则编译错误。
int x = 3000000000; //java默认直接写出的整数直接量是int类型,30亿超出整数范围 //编译错误:The literal 3000000000 of type int is out of range ,超出int范围。
整数直接量(literal):就是直接写出的整数,如100,除了十进制书写形式,也可以写16进制形式(以0x或0X开头,如0x186a)或8进制(以0开头,如0303240)。
1)两个整数相除,结果还是整数,小数位无条件舍弃;
int a = 5;
int b = 2;
int c = 5/2;
int d = 2/5;
System.out.println(c); //结果为整数:2,小数位无条件舍弃
System.out.println(d); //结果为0
2)整数运算时若超出范围,则发生溢出,溢出是需要避免的;
int a = 2147483647; //int最大值
int b = a+1;
System.out.println(b); //-2147483648,结果超出最大值范围,发生溢出,int最大值+1得到int的最小值
2.2 long长整型
对于较大的整数运算(超出int的范围),可以使用long型,一个long型变量占用8个字节(64位),最大表示范围是:-2^63~2^63-1,即-9223372036854775808~9223372036854775807。
1)长整型直接量需再数字后加L或l
long a = 3000000000l; //声明一个长整型变量a,赋值为30亿
long b = 3000000000L; //声明一个长整型变量b,赋值为30亿
2)运算时若有可能溢出,建议在第1个数字后加L
//计算10*3亿并输出结果 long a = 10*300000000;
//两个整型运算默认得到的还是整型,但是结果已经超int范围,所以发生溢出
System.out.println(a); //结果发生溢出:-1294967296 //如可能溢出,建议在第1个数字后加L,这样得到的结果就是long型,这里发生自动类型转换
long b = 10L*300000000;
System.out.println(b);
3)获取自1970年1月1日0时到现在的毫秒数
//System.currentTimeMillis()可以获取,得到的结果是long型
long time = System.currentTimeMillis();
System.out.println(time);
2.3 double类型
浮点型,就是小数,包括folat和double,double类型变量占8个字节(64位),double型的精度值是float类型的两倍,所以也成为双精度浮点型。大多数场合使用double表示浮点数。
1)浮点数直接量默认为double型,若想表示float型,需要在数字后面加F或f
float a = 5.6F;
float b = 7.8f;
double pi = 3.14;
2)double型数据在参与运算时,有可能会出现舍入误差,所以精确运算场合不可使用
2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确表示1/3一样,所以才会出现舍入误差,如果在需要精确运算的时候,可以使用BigDecimal类来实现。
double x = 3.0;
double y = 2.9;
System.out.println(x-y);
//结果是0.10000000000000009,出现舍入误差
2.4 char类型
字符类型事实上是一个2字节(16位)无符号整数,这个值对应字符的编码。Java字符类型采用Unicode字符集编码,Unicode是世界通用的定长字符集,所有的字符都是16位。
字符直接量通过单引号表示,如‘中’,也可以采用16进制表示形式,如‘\u4e2d'。
char c1 = '中'; //内存中存的是'中'的编码
char c2 = '\u4e2d'; //‘4e2d’是‘中’对应的16位Unicode编码的16进制表示形式
System.out.println(c1);
System.out.println(c2);
1)采用Unicode编码格式,每个字符都对应一个码,表现形式是字符char,但实质上是码(int型)
在对char型变量赋值时,有三种方式:
- 字符直接量:如'A',变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。
- 整型直接量:范围0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。
- Unicode:如'\u0041',Unicode字符的16进制形式。
ASCII('a' = 97, 'A' = 65, '0' = 48)
public class Test {
public static void main(String[] args){
char cha = 97; //内存中存的是'中'的编码
char chA = 65;
char chNum0 = 48;
System.out.println("97表示字母"+cha);
System.out.println("69表示字母"+chA);
System.out.println("48表示数字"+chNum0);
}
/*
运行结果:
97表示字母a
69表示字母A
48表示数字0
*/
2)字符直接量必须放在单引号中,有且仅有一个
char x = '你';
char y = '你好'; //编译错误
3)特殊字符需要通过\来转义
| 转义字符 | 含义 |
| '\n' | 表示回车符 |
| '\r' | 表示换行符 |
| '\\' | 表示反斜杠(\) |
| '\'' | 表示单引号(') |
| '\"' | 表示双引号(") |
char x = '\"';
char y = '\\';
System.out.println(x); //结果: "
System.out.println(y); //结果: \
2.5 boolean类型
boolean类型占1个字节(8位),适用于逻
辑运算,表示某个条件是否成立,一般用于程序的流程控制。boolean类型只允许取值true或false;true表示条件成立,false表示条件不成立,默认值为false。
int a = 5;
boolean b = a-1>0;
System.out.print(b); //结果:true
3.基本类型间转换
不同的基本类型直接可以相互转换,类型大小关系如下图:

3.1两种方式:
- 自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。
- 强制转换:从大类型到小类型,强制转换语法:(需要转换成的类型)变量,强制转换可能会造成精度丢失或溢出。
int a=5,b=5;
long c = a+b; //发生自动类型转换,int自动转换为long
a = (int)c; //强制转换,long强制转换为int,因为c=10没有超int范围,所以没发生溢出
long d = 3000000000L;
b = (int)d; //30亿超出int范围,强制转换发生溢出
System.out.println("d的值为"+d);
System.out.println("强制转换后b的值为"+b); /*
运行结果:
d的值为3000000000
强制转换后b的值为-1294967296
*/
3.2 两点规则:
- 整数直接量可以直接赋值给byte、short、char,但不能超出范围
- byte、short、char型数据参与运算时,先一律转换位int再运算
char a = 'a';
int b = a+10;
System.out.println(b); /*
运行结果:107
字符a是数字97,运算时先将a转换为码int97再做运算
*/
Java 变量及基本数据类型的更多相关文章
- JAVA 变量 数据类型 运算符 知识小结
---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...
- Java变量与数据类型之三:数据类型与转义字符
大家好,小乐又来了,上一篇:乐字节Java变量与数据类型之二:Java常量与变量, 今天接着讲Java变量与数据类型之三:数据类型与转义字符 一.数据类型 1.定义 Java是一种强类型语言,针对每种 ...
- 乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符
大家好,我是乐字节的小乐,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对 ...
- java变量、数据类型
public class Test { public static void main(String[] args) { //变量 //数据类型 变量名; //基本数据类型: //一个字节8位 //整 ...
- java变量和数据类型
变量 数据类型 变量名 = 数据值: 注意事项: 变量定义后可以不赋值,使用时再赋值.不赋值不能使用 变量使用时有作用域的限制. 变量不可以重复定义 数据类型转换 自动类型转换 范围大的数据类 ...
- java的五种数据类型解析
不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...
- JAVA中分为基本数据类型及引用数据类型
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...
- JAVA基础知识之数据类型
JAVA的数据类型知识点主要包括基本数据类型,包装类,字符串类(String,StringBuffer, StringBuilder区别和用法),数组,数据类型转换等等,暂时只想到这么多,后面会再补充 ...
- JAVA变量的类型,定义变量
JAVA中常用的数据类型 数据类型 数据类型解释 说明 char 字符型 用于存储单个字符,如:性别“男”.“女”,电灯“开”.“关” int 整形 用于存储整数,如一天的时间是24小时,一月份是31 ...
随机推荐
- Maven查找添加方式
可以通过以下链接 : https://mvnrepository.com/
- 关于WPF的弹出窗口
几个重要的概念需要清楚: Show和ShowDialog区别 1.调用Show方法后弹出子窗口后,线程会继续往下执行.调用ShowDialog方法弹出子窗口后,线程会阻塞,直到子窗口关闭才继续往下执行 ...
- 转:在Linux上安装ant环境
1.从http://ant.apache.org 上下载tar.gz版ant 2.复制到/usr下 3.tar -vxzf apahce-ant-1.9.2-bin.tar.gz 解压 4.chow ...
- day1 java基础回顾-内省
为什么要学内省? 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性. 内省是用于操作j ...
- SQL 分组获取产品 前两条记录
select * from ( select *, ROW_NUMBER() over(partition by IPAddress order by recordtime desc) as rowN ...
- EIP权限工作流升级说明-2019/5/23
增加mysql版本在线预览地址:http://www.eipflow.com:3000/
- 火狐restclient安装和使用
RESTClient是一款用于测试各种Web服务的插件,它可以向服务器发送各种HTTP请求(用户也可以自定义请求方式),并显示服务器响应.使用RESTClient您可以方便的测试各种Web服务,为您的 ...
- Git入门 时光穿梭鸡 版本回退 工作区 暂存区
分布式集中式 CVS及SVN都是集中式的版本控制系统 , 而Git是分布式版本控制系统 集中式版本控制系统,版本库是集中存放在中央服务器的, 而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得 ...
- 洛谷P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- es6入门5--class类的基本用法
在ES6之前,准确来说JavaScript语言并无类的概念,却有模拟类的做法.相比在类似java这类传统面向对象语言中通过类来生成实例,js则通过构造函数模拟类来生成实例. 这是因为在JS设计初期,作 ...