一、数据类型

1.概述

Java是强类型语言,在使用之前,必须说明数据到底占用多大的内存空间,所以通过数据类型以表示占用的大小

2.分类

①基本数据类型:在JDK中已经定义好的数据类型,官方也明确表示这些数据类型所占用空间大小,并且这些数据类型以表示占用的大小无法改变,描述的都是一些简单的数据

四类八种

整数类型:byte(字节)、short(短整型)、int(整型)、long(长整型)

浮点类型:float(单精度)、double(双精度)

字符类型:char

布尔类型:boolean

②引用数据类型:描述的不是数据本身,而是数据存储的地址,一般这些数据都是由基本数据类型组合而成,是一个复杂的数据(String)

3.描述

数据类型

关键字

占用内存

取值范围

默认值

字节型

byte

1字节

-128~127【-2^7~2^7-1】

0

短整型

short

2字节

-32768~32767【-2^15~2^15-1】

0

整型

int

4字节

-2^31~2^31-1

0

长整型

long

8字节

-2^63~2^63-1

0L

单精度浮点型

float

4字节

大于长整型

0.0F

双精度浮点型

double

8字节

0.0

字符型

char

2字节

0~65535

'\u0000'

布尔类型

boolean

1字节

未知

false

Java中除了基本数据类型就是引用数据类型

二、常量变量

1.常量

在程序的运行过程中,值不会发生变化

public static final int MAX = 100;

2.分类

①字面值常量:写出常量就知道表示的数值具体是多少

②符号常量:某些常量,我们知道是多少但是无法具体描述出来,就需要一个符号进行表示:e

3.变量

①在运行过程中,值会发生变化

②定义格式:数据类型 变量名=数据值;

4.分类

①静态变量:独立于方法之外的变量,用static修饰

②成员变量:独立于方法之外的变量,不用static修饰

③局部变量:类的方法中的变量,使用之前必须初始化

5.隐式类型提升(小转大)

①当一个小范围的数据和一个大范围的数据进行运算的时候,会先将小范围的数据类型提升为较大范围的,再进行运算,得到的结果也是较大范围的数据类型

②基本数据类型的排序

byte<short=char<int<long<float<double

③注意

byte、short、char、int之间进行运算的时候,都会直接提升为int类型的数据,再进行运算,只有int及其较大范围的数据进行运算的时候,才会进一步提升为较大范围的数据类型

6.强制类型转化(大转小)

①大范围的数据要存进小范围的变量中,由于担心精度损失,所以不能赋值,我们可以通过强制类型转化,将大范围的数据转为小范围

②格式

(要转化为的数据类型)被转化的数据类型

③强类型转化不一定会产生精度损失

7.常量优化机制

①给一个变量赋值,如果等号的右边是常量并且没有任何一个变量,那么就会再编译阶段计算常量的值,之后判断常量的值是否符合表达式左侧数据类型的取值范围,如果符合就直接赋值,如果不赋值就会报错

②赋值符号右侧的表达式,只要除了任何一个变量,常量优化机制就不会再起效了

8.字符类型

①使用单引号包围起来的单个字符,就是字符类型,使用char进行表示

②再计算机中,所有的符号都是以数字的形式进行表示的,字符也不例外

③字符集:表示字符到数字的一一对应的关系,别名【编码表】

④ASCII码表【0对应48】【A对应65】【a对应97】

三、运算符

1.算数运算符

(1)概述:++、--

(2)作用:在某个变量原有的基础上+1或者-1

(3)表达式和语句: 

①表达式:不带分号

②语句:就是带分号

(4)注意事项

①作为语句的时候,自增自减在前在后没有任何区别

②作为表达式:自增自减在前,先进行加减在进行运算;自增自减在后,先运算再进行加减

2.赋值运算符

(1)概述:用于给变量进行赋值的运算符

(2)分类:

①基本赋值运算符:= 

②扩展赋值运算符:+=、-=、*=、/=、%=

(3)扩展赋值运算符:先用符号左边的变量对符号右边的数据进行运算之后,将结果赋值给左边的变量

3.逻辑运算符

(1)概述:用于处理代码中逻辑的部分,运算符的参数都是布尔类型

(2)要处理的数据:布尔类型;处理之后的结果也是布尔类型 、

(3)【&】逻辑与:一假即假,全真为真

(4)【|】逻辑或:一真为真,全假为假

(5)【!】非:非真即假

(6)【&&】短路与:一假即假,全真为真

(7)【||】短路或:一真为真,全假为假

(8)注意 短路运算符在运算的时候,如果前面的表达式能够得出结论,后面的表达式就不需要执行

4.比较运算符

(1)概述:所有的比较运算符结果都是布尔类型

(2)组成

①等于:==

②不等于:!=、>= 

5.三元运算符

格式: 数据类型 变量名 = 布尔类型表达式 ? 表达式一 : 表达式二;

四、流程语句

1.概述

(1)流程:在程序运行的过程中,代码执行的顺序就是流程

(2)流程控制:通过某些代码格式来控制代码执行顺序

2.分类

(1)顺序语句:代码按照从上到下从左到右的顺序执行

(2)分支结构:代码执行到一定的程度,会产生一些情况,每种情况都必须提前准备好,但是真正运行的 时候只会执行其中的某一种情况

(3)循环语句:某些代码需要被执行很多遍,我们可以通过循环语句让一句代码反复执行

3.分支结构

(1)分类

①概述:分支结构:代码执行到一定的程度,会产生一些情况,每种情况都必须提前准备好,但是真 正运行的时候只会执行其中的某一种情况

②实现格式

if

if...else...

if...else if...else if...else...

switch

(2)if

①if:关键字,含义:假如,如果

②定义格式 if(逻辑表达式) { 语句体; }

(3)说明

①逻辑表达式:执行结果是布尔类型

②语句体:具体需要执行的代码块

(4)执行流程

①先判断逻辑表达式,如果为false,直接结束if语句

②如果为true,则执行语句体

(5)if...else

①else:关键字;含义:否则

②定义格式:if(逻辑表达式) { 语句体1; } else { 语句体2; }

③执行流程

执行逻辑表达式判断,如果为true,执行语句体1,执行完毕直接结束整个if...else语句体

执行逻辑表达式判断,如果为false,执行语句体2,执行完毕直接结束整个if...else语句体 

(6)多if...else

①定义格式

if(逻辑表达式1) { 语句体1; } else if(逻辑表达式2) { 语句体2; } else if(逻辑表达式3) { 语句体3; } else if(逻辑表达式4) { 语句体4; } else { 语句体5; }

②注意事项 

所有的逻辑表达式是按照从上到下去进行匹配的,所以逻辑表达式的逻辑应该不重叠,如果前面的 逻辑表达式包含了后面的逻辑。后面的内容就无法执行了

不管逻辑表达式匹配返回true还是false,逻辑表达式只要得出了值就意味着执行了

③注意事项

if后面的小括号不要加分号 

if语句后面如果只有一句代码的时候,可以省略大括号

(7)switch

①switch:关键字;含义:开关,每一种情况就像是一扇门,如果匹配到某种情况的时候,就相当于开发了这扇门,如果匹配不到就继续往下看下一扇门 

②格式  switch(表达式) { case 常量1: 语句体1; break; case 常量2: 语句体2; break; case 常量3: 语句体3; break; default: 语句体n; }

(8)注意事项

①case:关键字,含义:情况;break:关键字,含义:破坏;default:关键字,含义:否则

②表达式:

JDK5之前:byte、short、char、int

JDK5:枚举

JDK7:String

③case之后只能跟常量不能跟变量

④switch中的每一个模块都可以酌情省略

⑤case之后的常量要和表达式的数据类型保持一致,并且需要注意数据类型的取值范围

⑥表达式的结果只要符合表达式规定的类型即可

⑦default书写的位置可以是任何地方。默认放在最后面,无论写在哪里都是最后去匹配的

⑧switch语句结束的标志:遇到break或者右大括号

⑨case中的break语句可以省略,省略之后会发生case穿透,即从一个case到下一个case直到遇见 break或者有大括号

五、Java命名规范

(1)概述

约定俗成的规则,不遵守从语法角度讲不会有任何问题,但是行有行规

(2)规则:见名知意

①项目名:全小写

②包名:全部小写;

域名倒置:com.hqyj.demos

③类名或者接口名:大驼峰原则

规则:如果是一个单词首字母大写其余小写;如果是多个单词,每一个单词首字母大写,其余小写 例如:Demo01_Exercise、Exercise

④方法名,变量名:小驼峰原则

规则:如果是一个单词全部小写;如果是多个单词,第一个单词全小写,其余首字母大写,剩余小写

例如:get、main、getMax、getMaxValue

⑤常量名

规则:一个单词全部大写;多个单词,每个单词全大写,单词之间用下划线隔开

例如:MAX、MAX_VALUE、PI