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)。

8种类型介绍

数据类型

字节空间 使用场景
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 变量及基本数据类型的更多相关文章

  1. JAVA 变量 数据类型 运算符 知识小结

    ---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...

  2. Java变量与数据类型之三:数据类型与转义字符

    大家好,小乐又来了,上一篇:乐字节Java变量与数据类型之二:Java常量与变量, 今天接着讲Java变量与数据类型之三:数据类型与转义字符 一.数据类型 1.定义 Java是一种强类型语言,针对每种 ...

  3. 乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符

    大家好,我是乐字节的小乐,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对 ...

  4. java变量、数据类型

    public class Test { public static void main(String[] args) { //变量 //数据类型 变量名; //基本数据类型: //一个字节8位 //整 ...

  5. java变量和数据类型

    变量 数据类型  变量名  =  数据值: 注意事项: 变量定义后可以不赋值,使用时再赋值.不赋值不能使用 变量使用时有作用域的限制. 变量不可以重复定义 数据类型转换 自动类型转换  范围大的数据类 ...

  6. java的五种数据类型解析

    不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...

  7. JAVA中分为基本数据类型及引用数据类型

    一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...

  8. JAVA基础知识之数据类型

    JAVA的数据类型知识点主要包括基本数据类型,包装类,字符串类(String,StringBuffer, StringBuilder区别和用法),数组,数据类型转换等等,暂时只想到这么多,后面会再补充 ...

  9. JAVA变量的类型,定义变量

    JAVA中常用的数据类型 数据类型 数据类型解释 说明 char 字符型 用于存储单个字符,如:性别“男”.“女”,电灯“开”.“关” int 整形 用于存储整数,如一天的时间是24小时,一月份是31 ...

随机推荐

  1. [codeforces219D]Choosing Capital for Treeland树形dp

    题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边. 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值.依然是两次dfs,套路解法. 对树形dp的理解:树形d ...

  2. HashMap的clear方法

    我们都知道HashMap的clear()方法会清楚map的映射关系,至于怎么实现的呢? 下面先看一下clear()方法的源码 public void clear() { Node<K,V> ...

  3. 使用API修改控制台输出的颜色(前景色和背景色)

    1.api原型 SetConsoleTextAttribute BOOL WINAPI SetConsoleTextAttribute( _In_ HANDLE hConsoleOutput, // ...

  4. 为什么选择Netty

    支持高并发访问 比核心 Java API 更好的吞吐量,较低的延时资源消耗更少,这个得益于共享池和重用减少内存拷贝 https://baike.baidu.com/item/Netty/1006162 ...

  5. 2018ACM山东省赛 Games(dp取数)

    Games Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description Alice and Bob ...

  6. 从网络架构方面简析循环神经网络RNN

    一.前言 1.1 诞生原因 在普通的前馈神经网络(如多层感知机MLP,卷积神经网络CNN)中,每次的输入都是独立的,即网络的输出依赖且仅依赖于当前输入,与过去一段时间内网络的输出无关.但是在现实生活中 ...

  7. 3DMAX 多维材质及对应的UVW展开,UVW贴图

    多维材质说明 多维材质就是一个模型多个材质,(混合材质是多个材质混一起,跟这个貌似没关,比如地表草地,泥土等的混合操作) 作用: 比如一个模型就是需要两种材质,刀的金属刀身,木质刀柄,墙的一面是木板, ...

  8. 洛谷P2867 [USACO06NOV]大广场Big Square

    P2867 [USACO06NOV]大广场Big Square 题目描述 Farmer John's cows have entered into a competition with Farmer ...

  9. 洛谷P2513 [HAOI2009]逆序对数列

    P2513 [HAOI2009]逆序对数列 题目描述 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易 ...

  10. jzoj6008. 【THUWC2019模拟2019.1.18】Sequence (矩阵加速)

    题面 茉优最近研究发现,一个人的想愿能力可以认为是字符串S的一个子串S[l,r],而连接值可以认为是这个子串的本质不同子序列个数.现在她想验证她的结论是否正确,于是她给了你Q个询问,希望你帮她来计算, ...