java 语法基础看这一篇文章就够了
第一章 关键字
1
被Java语言赋予了特殊含义,用作专门用途的字符串(单词)
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
在起名字时,为了提高阅读性,要尽量有意义,"见名知意"
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中每个变量必须先声明,后使用
第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码
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(国标码)
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编码
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();//获取字符串类型数据
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/164373.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!