Java语法
- Java语法规范
- Java基础语法(面向过程)
-
- 变量和关键字
-
- 变量
- 关键字
- 常量
- 注释
- 基本数据类型
-
- 计算机中的二进制表示
- 计算机中的加减法
-
- 原码
- 反码
- 补码
- 整数类型
- 字符类型和字符串
- 小数类型
- 布尔类型
- 类型转换
-
- 隐式类型转换
- 显示类型转换
- 数据类型自动提升
- 运算符
-
- 赋值和算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 三目运算符
- 流程控制
-
- 选择结构
-
- if语句
- switch语句
- 循环结构
-
- for语句
- while循环
- 面向过程编程实战(基础+算法)
-
- 打印九九乘法表
- 求1000以内的水仙花数
- 青蛙跳台阶问题
Java语法规范
所有的Java语句必须以;
结尾!
无论是()
、[]
还是{}
,所有的括号必须一一匹配!
主方法的代码只能写在{}
中!
Java基础语法(面向过程)
在学习面向对象之前,我们需要了解面向过程的编程思维,如果你学习过C语言和Python就会很轻松!
变量和关键字
变量
变量就是一个可变的量,例如定义一个int类型的变量(int就是整数类型):
int a = 10;
a = 20;
a = 30;
我们能够随意更改它的值,也就是说它的值是随时可变的,我们称为变量。变量可以是类的变量,也可以是方法内部的局部变量(我们现阶段主要用局部变量,类变量在面向对象再讲解)
变量和C语言中的变量不同,Java中的变量是存放在JVM管理的内存中,C语言的变量存放在内存(某些情况下需要手动释放内存,而Java会自动帮助我们清理变量占据的内存)Java和C++很类似,但是没有指针!Java也叫C+±-
Java是强类型语言,只有明确定义了变量之后,你才能使用!一旦被指定某个数据类型,那么它将始终被认为是对应的类型(和JS不一样!)
定义一个变量的格式如下:
[类型] [标识符(名字)] = [初始值(可选)]
int a = 10;
注意:标识符不能为以下内容:
- 标识符以由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头。
- 大小写敏感!
- 不能有空格、@、#、+、-、/ 等符号
- 应该使用有意义的名称,达到见名知意的目的,最好以小写字母开头
- 不可以是 true 和 false
- 不能与Java语言的关键字重名
关键字
以下是 Java 关键字的表格形式:
类别 | 关键字 |
---|---|
基本类型 | int , byte , short , long , float , double , char , boolean |
控制流 | if , else , switch , case , default , for , while , do , break , continue , return |
访问修饰符 | public , protected , private |
类和对象 | class , interface , extends , implements , new , this , super , instanceof |
异常处理 | try , catch , finally , throw , throws , assert |
其他 | void , static , final , abstract , synchronized , volatile , transient , native , strictfp , enum , const , goto |
包和导入 | package , import |
注解 | @interface |
特殊关键字 | true , false , null |
包括基本数据类型、流程控制语句等,了解就行,不用去记,后面我们会一点一点带大家认识!
常量
常量就是无法修改值的变量,常量的值,只能定义一次:
final int a = 10;
a = 10; //报错!
常量前面必须添加final关键字(C语言里面是const,虽然Java也有,但是不能使用!)
这只是final关键字的第一个用法,后面还会有更多的用法。
注释
养成注释的好习惯,不然以后自己都看不懂自己的代码!注释包括单行注释和多行注释:
//我是单行注释
/**
* 我是
* 多行注释
*/
//TODO 待做标记
基本数据类型
Java中的数据类型分为基本数据类型和引用类型两大类,引用类型我们在面向对象时再提,基本数据类型是重点中的重点!首先我们需要了解有哪些类型。然后,我们需要知道的,并不是他们的精度如何,能够表示的范围有多大,而是为什么Java会给我们定义这些类型,计算机是怎么表示这些类型的,这样我们才能够更好的记忆他们的精度、表示的范围大小。所以,我们从计算机原理的角度出发,带领大家走进Java的基本数据类型。
这一部分稍微有点烧脑,但是是重中之重,如果你掌握了这些,任何相关的面试题都难不倒你!(如果你学习过计算机组成原理就很好理解了)
计算机中的二进制表示
在计算机中,所有的内容都是二进制形式表示。十进制是以10为进位,如9+1=10;二进制则是满2进位(因为我们的计算机是电子的,电平信号只有高位和低位,你也可以暂且理解为通电和不通电,高电平代表1,低电平代表0,由于只有0和1,因此只能使用2进制表示我们的数字!)比如1+1=10=2^1+0,一个位也叫一个bit,8个bit称为1字节,16个bit称为一个字,32个bit称为一个双字,64个bit称为一个四字,我们一般采用字节来描述数据大小。
十进制的7 -> 在二进制中为 111 = 2^2 + 2^1 + 2^0
现在有4个bit位,最大能够表示多大的数字呢?
- 最小:0000 => 0
- 最大:1111 => 23+22+21+20 => 8 + 4 + 2 + 1 = 15
在Java中,无论是小数还是整数,他们都要带有符号(和C语言不同,C语言有无符号数)所以,首位就作为我们的符号位,还是以4个bit为例,首位现在作为符号位(1代表负数,0代表正数):
- 最小:1111 => -(22+21+2^0) => -7
- 最大:0111 => +(22+21+2^0) => +7 => 7
现在,我们4bit能够表示的范围变为了-7~+7,这样的表示方式称为原码。
计算机中的加减法
原码
虽然原码表示简单,但是原码在做加减法的时候,很麻烦!以4bit位为例:
1+(-1) = 0001 + 1001 = 怎么让计算机去计算?(虽然我们知道该去怎么算,但是计算机不知道!)
我们得创造一种更好的表示方式!于是我们引入了反码:
反码
- 正数的反码是其本身
- 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
经过上面的定义,我们再来进行加减法:
1+(-1) = 0001 + 1110 = 1111 => -0 (直接相加,这样就简单多了!)
思考:1111代表-0,0000代表+0,在我们实数的范围内,0有正负之分吗?
- 0既不是正数也不是负数,那么显然这样的表示依然不够合理!
补码
根据上面的问题,我们引入了最终的解决方案,那就是补码,定义如下:
- 正数的补码就是其本身 (不变!)
- 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
其实现在就已经能够想通了,-0其实已经被消除了!我们再来看上面的运算:
1+(-1) = 0001 + 1111 = (1)0000 => +0 (现在无论你怎么算,也不会有-0了!)
所以现在,4bit位能够表示的范围是:-8~+7(Java使用的就是补码!)
以上内容是重点, 是一定要掌握的知识,这些知识是你在面试中的最终防线!有了这些理论基础,无论面试题如何变换,都能够通过理论知识来破解
整数类型
整数类型是最容易理解的类型!既然我们知道了计算机中的二进制数字是如何表示的,那么我们就可以很轻松的以二进制的形式来表达我们十进制的内容了。
在Java中,整数类型包括以下几个:
- byte 字节型 (8个bit,也就是1个字节)范围:-128~+127
- short 短整形(16个bit,也就是2个字节)范围:-32768~+32767
- int 整形(32个bit,也就是4个字节)最常用的类型!
- long 长整形(64个bit,也就是8个字节)最后需要添加l或L
long都装不下怎么办?BigInteger!
数字已经达到byte的最大值了,还能加