java 语法基础看这一篇文章就够了
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
第一章 关键字
- 关键字的概念
1 | 被Java语言赋予了特殊含义用作专门用途的字符串(单词) |
- 关键字特点
1 | 关键字中所有字母都是小写 |
- 常见关键字
class | interface | enum | byte | short |
---|---|---|---|---|
int | float | long | double | char |
boolean | void | true | false | null |
if | else | switch | case | default |
while | do | for | break | continue |
return | private | protected | public | abstract |
final | static | synchronized | extends | implements |
new | this | super | instanceof | try |
catch | finally | throw | throws | package |
native | strictfp | transient | volatile | assert |
- 保留字
1 | 保留字就是在当前Java语言中没有用到,但以后版本中可能会用到 |
cast | future | generic | inner | operator |
---|---|---|---|---|
outer | rest | var | goto | const |
第二章 标识符
- 标识符概念
1 2 | 官方: Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符 通俗: 凡是自己可以起名字的地方都叫标识符 |
- 标识符的定义规则
1 2 3 4 5 | 1. 由26个英文字母大小写0-9 _或 $ 组成 2. 数字不可以开头 3. 不可以使用关键字和保留字但能包含关键字和保留字 4. Java中严格区分大小写长度无限制 5. 标识符不能包含空格 |
- 注意事项
1 | 在起名字时为了提高阅读性要尽量有意义"见名知意" |
- Java中的名称命名规范
1 2 3 4 | 包名多单词组成时所有字母都小写xxxyyyzzz,一般为公司域名的倒序 eg: com.alibaba com.baidu 类名、接口名多单词组成时所有单词的首字母大写XxxYyyZzz 变量名、方法名多单词组成时第一个单词首字母小写第二个单词开始每个单词首字母大写xxxYyyZzz 常量名所有字母都大写。多单词时每个单词用下划线连接XXX_YYY_ZZZ |
第三章 变量
第1节 变量的概念
1 2 3 4 | 1. 内存中的一个存储区域 2. 该区域有自己的名称变量名和类型数据类型 3. 该区域的数据可以在同一类型范围内不断变化 4. Java中每个变量必须先声明后使用 |
- 变量的格式
1 | 数据类型 变量名=初始化值 |
- 变量的使用
1 | 变量是通过使用变量名来访问这块区域的 |
第2节 变量的分类
2.1 变量的分类(按数据类型)
1 | 为什么数据要分这么多种类型?这样的分类有什么好处? |
2.2 变量的分类(按声明位置)
1 2 | 在方法体外类体内声明的变量称为成员变量 在方法体内部声明的变量称为局部变量
|
注意事项: 局部变量除形参外需显式初始化
第四章 数据类型
第1节 整数类型
1 2 3 4 5 | byte、short、int、long Java各整数类型有固定的表数范围和字段长度不受具体OS的影响以保证java程序的可移植性 Java的整型常量默认为 int 型声明long型常量须后加"l"或"L" eg: long a=100L 或 long b=100l; |
类 型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节=8bit | -128 ~ 127 |
short | 2字节 | -2^15 ~2^15-1 |
int | 4字节 | -2^31 ~ 2^31-1 |
long | 8字节 | -2^63 ~ 2^63-1 |
第2节 浮点类型
1 2 3 4 5 6 7 8 9 | float、double 与整数类型类似Java 浮点类型也有固定的表数范围和字段长度不受具体OS的影响 Java 的浮点型常量默认为double型声明float型常量须后加"f"或"F" eg: float f=11.1f 或 float f=12.1F 浮点型常量有两种表示形式 十进制数形式 : 如 5.12 512.0f .512 (必须有小数点 科学计数法形式:如 5.12e2 512E2 100E-2 |
类 型 | 占用存储空间 | 表数范围 |
---|---|---|
单精度float | 4字节 | -3.403E38 ~ 3.403E38 |
双精度double | 8字节 | -1.798E308 ~ 1.798E308 |
1 2 3 4 5 | 什么是单精度,什么是双精度 单精度: 指32位的浮点数,小数点后7位或者8位是准确的 双精度: 指64位的浮点数,小数点后16位是准确的 双精度表示的浮点数比单精度小数拥有更高的精度. |
第3节 字符类型
1 2 3 4 5 6 7 8 9 10 11 | char char 型数据用来表示通常意义上"字符"(2字节) 字符型常量的三种表现形式: 1. 字符常量是用单引号('')括起来的单个字符涵盖世界上所有书面语的字符 eg: char c1='1' char c2='A' 2. Java中还允许使用转义字符'\'来将其后的字符转变为特殊字符型常量 char c3 = '\n' //换行 3. 直接使用 Unicode 值来表示字符型常量 char c4='\u1234' //ሴ char类型是可以和数值型数据进行运算的,因为它都对应有Unicode码 那么什么是Unicode码了解Unicode码之前我们先说一下ASCII码 |
- ASCII 码
1 2 3 4 5 6 7 8 9 10 11 | 上个世纪60年代美国制定了一套字符编码对英语字符与二进制位之间的关系做了统一规定被称为ASCII码 ASCII码占计算机存储的8位也就是一个byte(字节)共规定了128个字符的编码只占了一个字节的后7位第8位统一规定为0 128个字符编码中比如常见的【空格】是32(二进制00100000) 大写字母【A】是65二进制01000001等. 缺点: 由于计算机是美国人发明的,在设计字符编码的时候只考虑到了美国的字符数量,ASCII码不能囊括全球所有的字符. 解决方案: 计算机被各个国家开始使用,所以每一个国家针对自己国家的符号,都设计了自己国家的编码方式,比如中国的GBK(国标码) |
- Unicode码
1 2 3 4 5 6 7 8 | 乱码: 由于各个国家都有自己的编码,美国使用ASCII码(A对应65)我们国家使用GBK(A不一定是65),所以如果我用我们国家的计算机编写的文件,发送到美国,美国计算机在打开的时候就会出现内容混乱的问题.这就是乱码产生的原因. 解决乱码的方式: 指定全球统一编码,将全球所有的字符全部以一种编码方式编进计算机中.这就是Unicode码的由来 缺点: Unicode码只是一个符号集,他只规定了符号的二进制代码却没有规定这个二进制应该如何存储或者说这个二进制代码在计算机中应该存几个字节. char c1='中' char c2='A' 看这两个char类型在计算机存储的时候,第一个需要两个字节才能存下,而第二个只需要一个字节即可,我们Unicode码根本就区分不出来 c1和c2到底是使用Unicode码还是ASCII码进行编码. 所以针对Unicode码这个编码集,实现了Unicode码的存储方式,就是我们接下来的UTF-8编码 |
- UTF-8
1 2 3 4 | UTF-8是在互联网上使用最广的一种 Unicode 的实现方式 UTF-8是一种变长的编码方式。它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度 所以UTF-8编码是后面我们学习的时候用的最多的编码方式 |
第4节 布尔类型
1 2 3 4 | boolean boolean 类型适于逻辑运算一般用于程序流程控制(后面会讲到) boolean类型数据只允许取值true和false |
第5节 基本数据类型转换
1 2 3 4 5 6 7 | 自动类型转换容量小的类型自动转换为容量大的数据类型 有多种类型的数据混合运算时系统首先自动将所有数据转换成容量最大的那种数据类型然后再进行计算 byte,short,char之间不会相互转换他们三者在计算时首先转换为int类型 当把任何基本类型的值和字符串值进行连接运算时(+)基本类型的值将自动转化为字符串类型
|
数据类型按容量大小排序 ↑↑↑↑↑↑↑↑↑↑
第6节 强制类型转换
1 2 3 4 | 将容量大的数据类型转换成容量小的数据类型叫强制转换 eg: 将 int 转成 byte 强制转换需要使用强制转换符号【(括号)】 eg: int a=100; byte b = (byte)a; //a是int型 b是byte型 注意:强制类型转换可能造成精度降低或者数据溢出. boolean不能进行强制类型转换. |
第五章 运算符
1 2 3 4 5 6 7 8 9 | 运算符是一种特殊的符号用以表示数据的运算、赋值和比较等 运算符的分类: 1. 算术运算符 2. 赋值运算符 3. 比较运算符关系运算符 4. 逻辑运算符 5. 位运算符 6. 三元运算符 |
第1节 算术运算符
运算符 | 介绍 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +1 | 1 |
- | 负号 | a=1; -a | -1 |
+ | 加 | 1+1 | 2 |
- | 减 | 1-1 | 0 |
* | 乘 | 1*2 | 2 |
/ | 除 | 2/2 | 1 |
% | 取模 | 7%5 | 2 |
++ ++ | 自增(前) 先运算后取值 自增(后) 先取值后运算 | a=2;b=++a; a=2;b=a++; | a=3;b=3 a=3;b=2 |
– – | 自减(前) 先运算后取值 自减(后) 先取值后运算 | a=2;b=- -a; a=2;b=a- -; | a=1;b=1 a=1;b=2 |
+ | 字符串相加 | “1”+”1” | “11” |
1 2 3 4 5 | 注意: 1. 如果对负数取模可以把模数负号忽略不记 eg: 5%-2=1 2. 但被模数是负数则不可忽略 eg: -5%2=-1 当被模数为负数时,他的结果是不确定的 3. 对于除号("/")如果计算的是整数类型那么结果是整数 eg: 2/3=0,4/2=2 4. 对于除号("/")如果计算的是浮点类型那么结果是为浮点型 eg: 2.0/3=0.6666666666666666,4.0/2=2.0 |
第2节 赋值运算符
运算符 | 介绍 | 范例 |
---|---|---|
= | 赋值 | int a=100; |
+= | 加等 | int a=1;a+=1; // a=a+1; |
-= | 减等 | int a=1;a-=1; // a=a-1; |
*= | 乘等 | int a=1;a*=1; // a=a*1; |
/= | 除等 | int a=1;a/=1; // a=a/1; |
%= | 模等 | int a=1;a%=1; // a=a%1; |
1 2 3 4 5 | 思考: short s = 3; s=s+2; ① s+=2; ② ①和②有什么区别 |
第3节 比较运算符
运算符 | 介绍 | 范例 | 结果 |
---|---|---|---|
== | 判断两个数书否相等 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
第4节 逻辑运算符
1 2 | & - 逻辑与 | - 逻辑或 ! - 逻辑非 && - 短路与 || - 短路或 ^ - 逻辑异或 |
a | b | a&b | a|b | !a | a^b | a&&b | a||b |
---|---|---|---|---|---|---|---|
true | true | true | true | false | false | true | true |
true | false | false | true | false | true | false | true |
false | true | false | true | true | true | false | true |
false | false | false | false | true | false | false | false |
1 2 3 4 5 6 7 8 9 | 逻辑运算符用于连接布尔型表达式 eg: 5< x >10(x大于5并且小于10) 在Java需要写成 x>5&x<10 "&" 和 "&&" 的区别 "&" : 左边无论真假右边都进行运算 "&&" : 如果左边为真右边参与运算如果左边为假那么右边不参与运算 "|" 和 "||" 的区别 当左边为真右边不参与运算 "|" : 当左边为真右边也参与运算 "||" : 当左边为真右边不参与运算 |
- 练习
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | int x = 1; int y=1; if(x++==2 & ++y==2){ x =7; } System.out.println("x="+x+",y="+y); ------------------------------------------------------------------------------------ int x = 1,y = 1; if(x++==2 && ++y==2){ x =7; } System.out.println("x="+x+",y="+y); ------------------------------------------------------------------------------------ int x = 1,y = 1; if(x++==1 | ++y==1){ x =7; } System.out.println("x="+x+",y="+y); ------------------------------------------------------------------------------------ int x = 1,y = 1; if(x++==1 || ++y==1){ x =7; } System.out.println("x="+x+",y="+y); |
第5节 位运算符
1 | 位运算是直接对二进制进行运算,先转换成二进制,然后在运算 |
运算符 | 运算 | 范例 |
---|---|---|
<< | 左移 | 3 << 2 = 12 – 3*2*2=12 |
>> | 右移 | 3 >> 1 = 1 – 3/2=1 |
>>> | 无符号右移 | 3 >>> 1 = 1 – 3/2=1 |
& | 与运算 | 6 & 3 = 2 |
| | 或运算 | 6 | 3 = 7 |
^ | 异或运算 | 6 ^ 3 = 5 |
~ | 反码 | ~6 = -7 |
第6节 三元运算符
1 2 3 4 5 6 7 8 | 格式: (条件表达式)?表达式1:表达式2 条件表达式: 如果为true 运算后的结果是表达式1;如果为false 运算后的结果是表达式2 表达式1和表达式2为同种类型 练习: 1. 获取两个数中的较大数 2. 获取三个数中的较大数 |
第7节 运算符优先级
第六章 键盘输入
1 | Java提供了处理键盘输入的工具类Scanner,这个类在本地安装的JDK安装包下的jre文件夹中的lib文件夹中的rt.jar包中,所以要想使用此类必须保证本地安装JDK. |
获取方式
1 2 3 4 5 | //创建Scanner实例 Scanner scanner = new Scanner(System.in); int i = scanner.nextInt();//获取int类型数据 double d = scanner.nextDouble();//获取double类型数据 String s = scanner.next();//获取字符串类型数据 |