第2章 变量和数据类型
Author: A4 Seven
2.1变量
背景 |
内存,其实就是一块计算机的空间,将来我们就Java程序里实现的操作都是数据,而这些数据就是存在内存里。(旅馆例子) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
含义 |
变量,就是临时存放数据的地方,是一个数据存储空间的表示。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
语法 |
[访问修饰符] 变量类型 变量名[=初始值] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
命名规则 |
/** ①字:字母;下:下划线;美:美元符号$;人:人民币符号¥;骆驼:驼峰状. ②只有”类名”和”接口名”遵循”帕斯卡命名”,其他都是驼峰命名.类大变小 */ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
关键字 (50个) |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tips |
①浮点数默认数据类型是double,即就是你什么都不写的时候;如果想让它用float,必须在后面加一个f。 ②即使1.0表示的是整数1,但只要加了小数点,都是浮点型。如果还是使用int类型,则会保错,提示;类型不匹配,不能从double转化成int。 |
2.2 常量
定义 |
常量,指在程序运行中,其值不能改变的量,即不变的变量。(比如π、e等。) |
表示 |
常量名全部大写。 |
语法 |
final 数据类型 变量名=数值 |
提示 |
①常量,只能被赋值一次,因为它是个定值,不允许被修改,因此比较安全。通常定义时即对其初始化。 ②不同字符使用下划线连接。如:MAX_NUM表示一个常量。 ③声明常量时一定要赋初始值. |
使用 |
当修饰类名和方法时,则类名就是终极类名,不能再发展子类;方法就不能被修改. |
2.3 数据类型
@2.3.1 分类
分类 |
类型 |
大小 |
取范围 |
示例 |
|||
基本数据类型 (8种) |
数值型 |
整数型 |
byte |
字节 |
1字节8位 |
-128~127 |
|
short |
短整型 |
2字节16位 |
-215~215-1 |
||||
int |
整型 |
4字节32位 |
-231~231-1 |
||||
long |
长整型 |
8字节64位 |
-263~263-1 |
||||
浮点型 |
float |
单精度浮点型 |
4字节32位 |
||||
double |
双精度浮点型 |
8字节64位 |
|||||
字符型 |
char |
单字符型 |
2字节16位 |
0~65535 |
“男””女” |
||
布尔型 |
boolean |
布尔类型 |
1字节8位 |
true /false |
|||
引用数据类型 |
String |
字符串 |
“我喜欢Java程序” |
||||
数组 |
int [] score={10,20,30}; |
||||||
类 |
|||||||
接口 |
/**
①非整数型,即小数型,在Java里称为“浮点型”;
②char字符与int数字类型可以互相转换,如:“中”→ 20013;
③double是默认浮点类型;
④除了8个基本类型,剩下都是引用数据类型。引用数据类型包括3种:类/数组/接口.
⑤String字符串,要用“英文的双引号”引起来,char单字符串,要用“英文的单引号”引起来,数值型,无需加引号。字双char单
*/
@2.3.2 转换
算术运算 |
|
|||||||
赋值运算 |
自动转换 |
|
||||||
强制转换 |
|
/**
①不同的基本数据类型之间进行运算时需要进行类型转换.除布尔类型外,所有基本数据类型进行运算时都要考虑类型转换.其主要应用在算术运算时和赋值运算时.
②强制转换之后,可能会丢失数据.因为小数点后面的数字都会强制被抹掉.
③不仅基本数据类型可以类型转换,存在继承关系的引用数据类型也可以进行自动类型转换和强制类型转换.
*/
2.4 运算符
@2.4.1 基本运算符
赋值运算符 |
|
||||||||||||||||||
算术运算符 |
|
||||||||||||||||||
关系运算符 |
|
||||||||||||||||||
逻辑运算符 (优先级 高 → 低) |
(短路:如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了) |
||||||||||||||||||
条件运算符 (三元运算符) |
|
||||||||||||||||||
优先级 |
①单目运算符包括! ~ ++ --,优先级别高. ②算术运算符>关系运算符>逻辑运算符>赋值运算符. ③可以通过()改变表达式的运算顺序,()优先级最高. |
/**
01.复合赋值运算符:
①推荐使用复合赋值运算符,将”i=i+j”换为”i+=j”,便于程序编译处理,具有更好的性能.
②+=2表示在自身的基础上去加等号后面的数(如2),加完了结果再赋给这个变量num1。即num1=num1+2。
02.算术运算符:
①除法运算符,如果两个操作数均是整数,结果也是整数,会舍弃小数部分;如果两个操作数中有一个是浮点数,将进行自动类型转换,结果也是浮点数,保留小数部分。
②对于取模运算符,如果两个操作数均是整数,结果也是整数;如果两个操作数中有一个是浮点数,结果也是浮点数,保留小数部分。
③自加运算符只有i++/++i两种使用方式,它们的相同点是都相当于i=i+1;不同点是i++是先进行表达式运算再加1,而++i是先加1再进行表达式运算。
a.如果num没有与其他变量进行运算时候,++或--,在前面和在后面,结果都是一样的.
b.当num与其他变量进行运算时,++或--在前面,先进行自加或自减,再进行赋值运算.
(∵++在前面,∴num先进行自加运算,(num=num+1;)最后把运算之后的num结果赋值给num2,(num2=num;))
c.当++或--在后面,先进行赋值运算,再进行自加或自减.
(∵++在后面,∴num先进行赋值运算,把num赋值给num2,(num2=num;)最后num再进行自加运算,(num=num+1;))
03.关系运算符
①关系表达式的结果为布尔值,非true即false.作用是用来做比较运算的.
②=为赋值运算符,==为等于运算符;
③==、!=支持所有数据类型的比较,包括数值类型/布尔类型/引用类型;
>、<、>=、<=运算符只支持数值类型的数据比较,不支持字符串比较.
④>、<、>=、<= 运算符的优先级别高于==、!=.
04.逻辑运算符:
①逻辑运算符用于对两个布尔型操作数进行运算,其结果还是布尔值.
②操作数类型只能是布尔类型,操作结果也是布尔值.
③&和&&区别:当&&两侧为false时,将不会计算右侧的表达式,即左true则false;无法任何情况,&两侧的表达式都会参与计算.
@2.4.2 转义符
\n |
换行 |
\t |
空格(一个制表位) |
\\ |
输入”\” |
\r |
回车 |
@2.4.3 equals()
语法 |
“字符串”.equals(变量名) |
作用 |
字符串比较 |
/**
①数值的比较,使用“==”来比较;字符串的比较,则使用“equals”,equals就相当于==。
②”男”.equals(sex);意思是,拿sex这个变量和男这个字符串来进行比较,看看sex是不是等于男这个字符串,如果是,那么这个equals的结果就是true;如果sex这个变量它不是男但它是女,那么女肯定不等于男吧,所以结果就是一个false。
*/
2.5 注释
单行注释 |
Ctrl + / |
// |
多行注释 |
Ctrl +Shift + / 或 /* + 回车键 |
/* * */ |
文档注释 Javadoc文档 |
/** + 回车键 |
/** * */ |
Tips:
JavaDoc注释,可以为程序生成像官方API帮助文档一样的文件,将代码中的文档注释提取出来,自动生成一份HTML格式的API帮助文档,其风格与官方API帮助文档完全一样,省去了枯燥/烦琐的手动编写帮助文档的工作.
2.6 Scanner类
语法 |
|
||||||||
常用方法 |
|
/**
没有nextChar这个说法
*/
2.7 随机数
产生0~9随机数 |
int random = (int)(Math.random()*10); |
/**
Math是JDK默认提供给我们写好的一个类,它其中有一个方法叫random。因此Math.random的意思是生成一个0-1之间的小数,比如0.1、0.2,而且生成的小数包括0,但不包括1,也就是说,它生成的是一个大于等于0但是小于1的一个浮点数。
但是我们需要的是0-9之间的数字,那么可以把它扩大10倍,乘以10,因此就变成了0-10之间的数字了,当然也是包括0但不包括10,而且也是0-10之间的一个浮点数,最大的可能到九点几,比如可能是9.8、9.9。
但是我们需要的是0-10之间的整数,而这时生成的是一个浮点数,一个double类型的数字,怎么把double变成int呢?非常简单,在前面加一个括号int,进行强制类型转换,这样,变成int之后,就会把后面的小数点都抹掉,因此就可以确保生成的数字是0-9之间的整数。
即:Math这个类它有一个方法叫做random,现在是生成0-1之间的浮点数,我把它乘以10是变成0-10之间的浮点数,现在把这个浮点数整个括号括起来,再加一个括号int,给它强转成0-10之间的整数,但是不包括10,所以就是0-9之间的整数。
*/