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. glib 库 hash table 使用

    glib库提供了 hashtable 的实现 1. 常用函数: 创建一个 GHashTable 函数: hash_func 是创建value的key值的函数,key_equal_func 是比较两个k ...

  2. 3、opencv 图像显示功能

    #include <iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;i ...

  3. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  4. win7 卸载ie10+ 重新安装ie8

    烦恼: erp系统不支持高版本ie10+ 项目开发测试需要安装了高版本ie 项目结束,为了方便使用erp,决定卸载ie11,重新安装ie8 解决方法: 1.win+R打开运行命令,键入appwiz.c ...

  5. CodeChef - ELHIDARR Find an element in hidden array(二分交互)

    Find an element in hidden array There is an array of length N consisting of non-negative integers. T ...

  6. MVC+NHibernate笔记

    Nhibernate 要求model实体类对于lazy="true" ,字段属性前需要加 virtual sqlserver2005和oracle10g的hibernate.cfg ...

  7. Weekly Contest 112

    945. Minimum Increment to Make Array Unique Given an array of integers A, a move consists of choosin ...

  8. UE4 中的 C++ 编程介绍

    https://docs.unrealengine.com/latest/CHN/Programming/Introduction/index.html UE4 中的 C++ 编程介绍 Unreal ...

  9. 洛谷P3797 妖梦斩木棒

    P3797 妖梦斩木棒 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看 ...

  10. 剑指Offer的学习笔记(C#篇)-- 二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 一 . 解题思想与二叉搜索树概念 (1). 二叉树 ...