一、数据类型
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