第2章变量和数据类型
Author: A4 Seven
2.1变量背景内存,其实就是一块计算机的空间,将来我们就Java程序里实现的操作都是数据,而这些数据就是存在内存里。(旅馆例子)
含义变量,就是临时存放数据的地方,是一个数据存储空间的表示。
语法[访问修饰符]变量类型 变量名[=初始值]
命名规则首字母字、下、美、人
其余部分字、下、美、人、数
整体结构驼峰命名法:第一个单词的首字母小写,其后每个单词的首字母大写。(就像骆驼背一样,驼峰状
原则见名知义原则
驼峰命名法
字下美人数骆驼,区分大小写
/**
①字:字母;下:下划线;美:美元符号$;人:人民币符号¥;骆驼:驼峰状.
②只有”类名”和”接口名”遵循”帕斯卡命名”,其他都是驼峰命名.类大变小
*/
关键字
(50个)abstractassertbooleanbreakbytecase
catchcharclasscontinuedefaultdo
doubleelseenumextendsfinalfinally
floatforifimplementsimportinstanceof
intinterfacelongnativenewpackage
privateprotectedpublicreturnshortstatic
strictfpsuperswitchsynchronizedthisthrow
throwstransienttryvoidvolatilewhile
gotoconst
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 转换算术运算
赋值运算自动转换含义小→大,放大转换
条件①两种类型要兼容:数值类型(整型和浮点型)互相兼容,即必须是同种类型,不可能数值类型与非数值类型进行转换.
②目标类型大于源类型(等号左边>等号右边)
规则如果一个操作数为double,则整个表达式都提升为double.
强制转换含义大→小,缩小转换(使用小括号)
语法(要转成后的数据类型)表达式
/**
①不同的基本数据类型之间进行运算时需要进行类型转换.除布尔类型外,所有基本数据类型进行运算时都要考虑类型转换.其主要应用在算术运算时和赋值运算时.
②强制转换之后,可能会丢失数据.因为小数点后面的数字都会强制被抹掉.
③不仅基本数据类型可以类型转换,存在继承关系的引用数据类型也可以进行自动类型转换和强制类型转换.
*/
2.4 运算符
@2.4.1 基本运算符赋值运算符表示=
语法变量名 =表达式
复合赋值运算符+= -= *= /= %=
算术运算符+加
-减
*乘
/除
%取余(取模)
++自加
--自减
关系运算符==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
逻辑运算符
(优先级
高 → 低)!逻辑反(逻辑非)操作数为true,结果为false;
操作数为false,结果为true;
&逻辑与两个操作数都是true,结果才为true
^逻辑异或两个操作数相同,结果为false;
两个操作数不同,结果为true;
|逻辑或两个操作数一个是true,结果为true
&&短路与同”&”,但短路.
||短路或同”|”,但短路.
(短路:如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了)
条件运算符
(三元运算符)语法
执行顺序先看?号前面的条件,如果条件是true,则执行表达式1,表达式2就不执行了;如果条件是false,则直接执行表达式2。
优先级①单目运算符包括! ~ ++ --,优先级别高.
②算术运算符>关系运算符>逻辑运算符>赋值运算符.
③可以通过()改变表达式的运算顺序,()优先级最高.
/**
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类语法导入类import java.util.*;
创建Scanner对象Scanner input = new Scanner(System.in);
获得键盘输入的数据int now = input.nextInt();
常用方法int nextInt();获得键盘输入的一个整型数值;
doublenextDouble();获得双精度类型数值;
Stringnext();获得字符串或单个字符;
boolean hasNext();判断是否有输入数据.如果有输入数据,则返回true;否则,返回false.
/**
没有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之间的整数。
*/