第2章 变量数据类型

Author: A4 Seven 

2.1变量

背景

内存,其实就是一块计算机的空间,将来我们就Java程序里实现的操作都是数据,而这些数据就是存在内存里。(旅馆例子)

含义

变量,就是临时存放数据的地方,是一个数据存储空间的表示。

语法

[访问修饰符]  变量类型  变量名[=初始值]

命名规则

首字母

字、下、美、人

其余部分

字、下、美、人、数

整体结构

驼峰命名法:第一个单词的首字母小写,其后每个单词的首字母大写。(就像骆驼背一样,驼峰状

原则

见名知义原则

驼峰命名法


字下美人数骆驼,区分大小写

/**

字:字母;下:下划线;美:美元符号$;人:人民币符号¥;骆驼:驼峰状.

②只有类名接口名遵循帕斯卡命名,其他都是驼峰命名.类大变小

*/

关键字

(50)

abstract

assert

boolean

break

byte

case

catch

char

class

continue

default

do

double

else

enum

extends

final

finally

float

for

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

strictfp

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

goto

const





 

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 转换

算术运算

wKiom1g2QgfCHlLmAAGKywppR_w594.png-wh_50

赋值运算

自动转换

 

含义

小→大,放大转换

条件

①两种类型要兼容:数值类型(整型和浮点型)互相兼容,即必须是同种类型,不可能数值类型与非数值类型进行转换.

②目标类型大于源类型(等号左边>等号右边)

规则

如果一个操作数为double,则整个表达式都提升为double.

 

强制转换

含义

大→小,缩小转换(使用小括号)

语法

(要转成后的数据类型)   表达式

 

/**

①不同的基本数据类型之间进行运算时需要进行类型转换.除布尔类型外,所有基本数据类型进行运算时都要考虑类型转换.其主要应用在算术运算时和赋值运算时.

②强制转换之后,可能会丢失数据.因为小数点后面的数字都会强制被抹掉.

③不仅基本数据类型可以类型转换,存在继承关系的引用数据类型也可以进行自动类型转换和强制类型转换.

*/ 

 

 

2.4 运算符

@2.4.1 基本运算符

赋值运算符

表示

=

语法

变量名 = 表达式

复合赋值运算符

+=  -=  *=  /=  %=

 

算术运算符

+

-

*

 /

%

取余(取模)

++

自加

--

自减

 

关系运算符

==

等于

!=

不等于

大于

小于

>=

大于等于

=

小于等于

 

逻辑运算符

(优先级

高 → 低)

!

逻辑反(逻辑非)

操作数为true,结果为false

操作数为false,结果为true

&

逻辑与

两个操作数都是true,结果才为true

^

逻辑异或

两个操作数相同,结果为false

两个操作数不同,结果为true

|

逻辑或

两个操作数一个是true,结果为true

&&

短路与

&,但短路.

||

短路或

|,但短路.

    (短路:如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了)

条件运算符

(三元运算符)

语法

wKioL1g2QifjtvNUAACaxDASno8131.png 

执行顺序

    先看?号前面的条件,如果条件是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没有与其他变量进行运算时候,++--,在前面和在后面,结果都是一样的.

wKiom1g2QnOxJAjIAACCaItxw-I967.png

wKioL1g2QnSiwDjyAACB8Kjhb7E446.png



 

b.num与其他变量进行运算时,++--在前面,先进行自加或自减,再进行赋值运算.

wKiom1g2QnWR5bv5AACmqmK69tE248.png 

(++在前面,num先进行自加运算,(num=num+1;)最后把运算之后的num结果赋值给num2,(num2=num;))

 

 

c.++--在后面,先进行赋值运算,再进行自加或自减.

wKioL1g2QnaxZb_TAACk6AuDBks545.png 

(++在后面,num先进行赋值运算,num赋值给num2,(num2=num;)最后num再进行自加运算,(num=num+1;))

 

03.关系运算符

①关系表达式的结果为布尔值,truefalse.作用是用来做比较运算的.

=为赋值运算符,==为等于运算符;

==!=支持所有数据类型的比较,包括数值类型/布尔类型/引用类型;

><>=<=运算符只支持数值类型的数据比较,不支持字符串比较.

><>=<= 运算符的优先级别高于==!=.

 

04.逻辑运算符:

①逻辑运算符用于对两个布尔型操作数进行运算,其结果还是布尔值.

②操作数类型只能是布尔类型,操作结果也是布尔值.

&&&区别:&&两侧为false,将不会计算右侧的表达式,即左truefalse;无法任何情况,&两侧的表达式都会参与计算.

 

@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帮助文档完全一样,省去了枯燥/烦琐的手动编写帮助文档的工作.

 

wKioL1g2QruCVttnAAA_fpMBPzU534.png 

 

 

2.6 Scanner

语法

导入类

import  java.util.*;

创建Scanner对象

Scanner  input = new Scanner(System.in);

获得键盘输入的数据

int  now = input.nextInt();

 

常用方法

int  nextInt(); 

获得键盘输入的一个整型数值;

double  nextDouble();

获得双精度类型数值;

String  next();

获得字符串或单个字符;

boolean hasNext();

判断是否有输入数据.如果有输入数据,则返回true;否则,返回false.

 

/**

没有nextChar这个说法

*/

wKiom1g2QtDTIZ1WAAE1w9tC2YE439.png-wh_50 

 

 

2.7 随机数

产生0~9随机数

int  random = (int)(Math.random()*10);

/**

MathJDK默认提供给我们写好的一个类,它其中有一个方法叫random。因此Math.random的意思是生成一个0-1之间的小数,比如0.10.2,而且生成的小数包括0,但不包括1,也就是说,它生成的是一个大于等于0但是小于1的一个浮点数。

但是我们需要的是0-9之间的数字,那么可以把它扩大10倍,乘以10,因此就变成了0-10之间的数字了,当然也是包括0但不包括10,而且也是0-10之间的一个浮点数,最大的可能到九点几,比如可能是9.89.9

但是我们需要的是0-10之间的整数,而这时生成的是一个浮点数,一个double类型的数字,怎么把double变成int呢?非常简单,在前面加一个括号int,进行强制类型转换,这样,变成int之后,就会把后面的小数点都抹掉,因此就可以确保生成的数字是0-9之间的整数。

即:Math这个类它有一个方法叫做random,现在是生成0-1之间的浮点数,我把它乘以10是变成0-10之间的浮点数,现在把这个浮点数整个括号括起来,再加一个括号int,给它强转成0-10之间的整数,但是不包括10,所以就是0-9之间的整数。

*/