一、 关键字:
就是在java语法编程的时候,在关键的地方使用的单词,体现关键的地方的含义,都是事先定好的。
1、关键字的定义和特点:
定义:被Java语言赋予了特殊含义,用做专门的字符串(单词)。
特点:关键字中所有的单词都为小写。
(1):用于定义数据类型的关键字:
class 类 short 短整型 int 整形 long 长整型 double 双精度浮型 float 单精度浮点型 char 字符型 byte 字节型 interface 接口 enum 枚举 void 无法返回型 Boolean 布尔型
(2):用于定义数据类型值的关键字:
ture 是 flase 非 null 空
(3):用于定义访问权限修饰符的关键字:
Private 私有的 protected 受保护的 public 公共的
(4):用于定义类、函数、变量饰符的关键字符:
Abstract 声明抽象 final 最终值 static 静态 synchronized 线程同步
(5):用于定义类与类之间的关键字:
extends扩充、继承 implements 实现(接口)
(6):用于定义建立实例及引用对象、判断实例的关键字:
New 新建 this 本类 super 父类、超类 instanceof 实例
(7):用于异常处理的关键字:
Try 捕获异常 catch 捕捉异常 finally 没有异常都执行 throw 抛出一个异常对象 throws 声明一个异常可能被抛出
(8):用于包的关键字:
Package 包 import 引入
(9):其他修饰关键字:
Native 本地(非java) strictfp 严格 transient 短暂 volatile 易失 assert 断言表达式是否为真
二、文本编辑器、标识符
1、windows:
notepad++ uitraedit editplus
2、标识符:
Java对各种变量、方法和类要素命名时,使用的字符序列为标识符。
凡是可以自己起名字的地方都叫标识符。
3、定义合法标识符规则:
(1)由26个英文字母大小写、0~9、_或$组成。
(2)数字不可以开头
(3)不可以单独使用关键字和保留字,包括关键字和保留字。
(4)java中严格区分大小写,长度无限制。
(5)标识符不能包括空格。
(注意:在起名时,为了提高阅读性,要尽量有意义,“见名知意”。)
4、java中的名称命名规范
(1)包名:多单词组成时所有字母都小写:xxyyzz。
(2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz。
(3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始首字母 大写:xxxYyyZzz。
(4)常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ。
三、变量
1、变量的概念:
(1)内存的一个储存区域。
(2)该区域由自己的名称(变量名)和类型(数据类型)。
(3)java中的变量必须先声明后使用。
(4)改区域的数据可以在同一类型范围内不断变化。
2、使用变量注意:
(1)变量的作用域:一堆{}之间内有效。
(2)初始化值(第一次变量赋值)。
3、定义变量的格式:
数据类型 变量名 = 初始化值(int i = 1)
(变量是通过使用变量名来访问这块区域的)
四、变量分类(按数据分类)
对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
1、数据类型:
(1)基本数据类型:int 、long、short、byte、double、float、char、boolean
(2)引用类型:类:class、接口:interface、数组:[]
(数据类型分为基本类型和数据类型和引用类型,其中基本数据类型有8种,除了这8种之外的其他所有数据类型都是引用数据类型。)
2、整数类型:byte、short、int、long
Java各整数类型由固定的标数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
Java的整数常量默认为int型,声明long型常量必须在后面加”l“或者”L“。
类型 | 占用存储空间 | 表数范围 |
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 |
3、浮点型:float、double
与整数类型相似,Java浮点类型也有固定的标数范围和字段长度,不受具体OS的影响
Java的浮点型常量默认为double型,声明float型常量,需后加”f“或“F“。
浮点型常量有两种表示方式:
十进制形式:如:5.12、512.0f、.512(必须有小数点)。
科学计数法形式:如:5.12e2、512E2、100E-2
类型 | 占用空间 | 表数范围 | 精度 |
单精度float | 4字节 | -2的128次方~2的128次方 | 7位有效数字 |
双精度double | 8字节 | -2的1024次方~2的1024次方 | 16位有效数字 |
4、字符类型:char(用英文的’ ’括起来的单个字母、数字、符号)
Char类型数据用来表示通常意义上的“字符”(两个字节)。
(1)、字符型常量的表现形式:
字符型常量用单引号(‘ ’)括起来的单个字符,涵盖世界上所有的书面语的字符。
例如:
char c1 = ‘a’、char c2 = ‘中’、char c3 = ‘9’
Java中还允许受用转义字符‘/’来将其后的字符转为特殊字符型常量。
例如:
char c3 = ‘/n’ (//‘/n’表示换行符)。
Char类型是可以计算的,因为它有对应的Unicode码。
字符 | 说明 |
/b | 退格符 |
/n | 换行符 |
/r | 回车符 |
/t | 制表符 |
/” | 双引导 |
/’ | 单引导 |
// | 反斜线 |
5、布尔类型:boolean(用来判断条件,比如需要知道结果是否为正数,就可以使用布尔类型。)
Boolean类型适用于逻辑运算,一般用于程序流程控制。
If条件控制语句
While循环控制语句
Do-while循环控制语句
For循环语句
Boolean类型数据只允许取值true和fale,无null。
不可以用0或非0的整数替代false或者ture,这点和c语言不同。
如:
boolean b1 = ture ; Boolean b2 = flase
Public class Test{
Public static void main (String[] arge){
System.out.print(“sss/n”);
System.out.println(“sss”) //两种都可,常用下面这个
}
}
6、引用类型:String类
1、值null可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。
2、String类 属于引用变量,可用于null赋值。
3、String类是一个典型的不可变类,String对象创建出来就不可改变。创建出的字符串将存放在数据区,保证每一个字符串常量只有一个,不会产生多个副本。
字符串:就是由0到多个字母数字符号共同组成的一个串,这个串要用英文的双引号括起来。
如:
String S0 = “hello world”;
System.out.println(str);
五、集成开发环境
里面包含了文本编辑工作,自动编译、简化运行,随时进行代码的调试。
Eclipse、IDEA、NetBeans
六、数据类型补充:
1、基本数据类型转换
(1)自动类型转换:容量小的自动转换为容量大的数据类型。数据类型按容量大小排序:doule-float-long-int-char、short、byte(char、short、byte不能相互转换。)
(2)有多种类型的数据混合运算时,系统首先将所有的数据转换成容量大的那种数据类型,然后再计算。
(3)byte、short、char之间不会相互转换,他们在计算时首先会转换成int类型。
(4)当把任何基本类型的值和字符串的值进行连接运算时,基本类型都将自动转换成字符串类型。例:String str0 = “1”+1+2+3;
System.out.println(strin);
输出结果:1123
(5)ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制之间的关系做了统一的规定,这个被称为ASCII码,ASCII码一共规定了128个字符的编码,比如空格“space”时32,大写字母A是65.。
2、强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换成小的数据类型。使用是要加强制转换浮(()),但可能造成精度降低或溢出,格外要注意。
(1)通常,字符串不能直接转换成基本类型,但通过基本类型对应的包装类可以实现把字符串转换成基本类型。
如:String a = “43”;
Int I = Integer.parselnt(a);
Boolean类型不可以转换为其他的数据类型。
(2)数据类型的运算规则:
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后在进行计算。数字类型从小到大分别是:byte short int long float double
- 数字类型运算中,多个相同的类型变量参与的计算,变量要先转换为相对应的数据类型的默认类型(比如两个byte类型的变量相加,会先把两个byte类型的变量转换成默认的int类型之后再计算,得到的结果是int类型。)
七、运算符
1、运算符是一种特殊的符号,用以表达数据的运算,赋值和比较等。
(1)算数运算符
(2)赋值运算符
(3)比较运算符(关系运算符)
(4)逻辑运算符
(5)位运算符
(6)三元运算符
2、算数运算符
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | B=4;-B | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(取余数) | 7%5 | 2 |
++ | 自增前;先运算后取值 | a=2;b=++a | a=3;b=3 |
++ | 自增后;先取值后运算 | a=2,b=a++ | a=3;b=2 |
-- | 自增前;先运算后取值 | a=2;b=--a | a=1;b=1 |
-- | 自增后;先取值后运算 | a=2;b=a-- | a=1;b=2 |
+ | 字符串连接 | "He" + "llo" | "Hello" |
算数运算的注意问题:
(1)如果对负数取模,可以把模数负号忽略不计,如:5%-2=1。但被取模数是负数则不可以忽略、此外,取模运算的结果不一定为整数。
(2)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x = 3510;x = x/1000*1000;x的结果是?3000
(3)“+”除字符串相加功能外,还能把非字符串转化成字符串。如:Systrm.out.println(“5+5=”+5+5);的打印结果是?5+5=55
(4)以下二者的区别:
System.out.println(‘*’ + ’/t’ + ’*’); // ’ ’括起来是char类型,char类型的数据是可以进行数学运算的,在计算过程时字符转换成了ASCII码计算。
System.out.println(“*” + ‘/t’ + ‘*’); // ” ”时字符串,字符串与其他数据类型相加时,实际上是把其他的数据转换成字符串,做字符串拼接。
八、赋值运算符
符号:=
1、当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换换原则进行处理。
支持连续赋值。
(1)支持连续赋值。
(2)扩展赋值运算符:+=;-+;*=;/=;%=
(3)在使用扩展赋值运算时,变量在参与运算时会把结果强制转换为当前变量的类型。
(4)“+=”:把左操作数和右操作数相加赋值给左操作数。例如c += a等价于 c = c + a
九、比较运算符(关系运算符)
运算符 | 运算 | 范例 | 结果 |
== | 相等 | 4==3 | false |
!= | 不相等 | 4!=3 | false |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
比较运算符的结果都是boolean型,要么是false,要么是true。
比较运算符“==”不能误写成“=”
十、逻辑运算符
&:逻辑与 |:逻辑或 !:逻辑非
&&:短路与 ||:短路或 ^:逻辑异或
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、逻辑运算符注意点:
(1)逻辑运算符用于连接布尔型表达式,在java中不可以写成3<X<6,应该写成x>3&x<6。
(2)”&”和”&&”的区别:
单&时:无论真假,右边都进行计算。
双&&时:如果左边时真的,右边参与计算,如果时假的,右边不参与计算。
|和||同理。
(3)异或(^)与或(|)的不同之处:当左右都为ture时,异或的结果为false。可以理解为异或追求的是异。
十一、位运算符(用到的少)
运算符 | 运算 | 范例 |
<< | 左移 | 3<<2=12等同于3*2*2=12,m<<n等同于m*2的n次方 |
>> | 右移 | 3>>1=1等同于3/2=1,等同于m>>n等同于m*2的-n次方 |
>>> | 无符号右移 | 3>>>1=1等同于3/2=1 |
& | 与运算 | 6&3=2 |
| | 或运算 | 6|3=7 |
^ | 异或运算 | 6^3=5 |
~ | 反码 | ~6=-7 |
注意:无<<<
位运算符:直接对二进制进行计算。
有符号的右移是看右移之后的首位时0还是1,是0空位补0,是1空位补1。
无符号的右移在移动之后不管首位是0还是1都直接补0.
总结:
<< | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 被移除的二进制最高位是0,右移后空位补0,最高位是1,空位补1 |
>>> | 无符号,被移位的二进制最高位不管是0还是1,都补0 |
& | 与运算,同位上,||得1,其他都得0 |
| | 或运算,同位上,只要有|就得1,只有0 0才得0 |
^ | 异或运算,同位上,相同数得0,不相同得1(如11,00都得0。0,1;1,0得1) |
~ | 反码,就是把二进制同位反转,0,1互换 |
十二、三元运算符(三目运算符)
格式:
(条件表达式)?表达式1:表达式2:
为ture,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
如:
int I = 1;
Int k = I > 0 ? 1 : 0;
System.out.println(k);
十三、运算符的优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
只有单目运算符、三元运算符、赋值运算符是从右向左运算的。
优先级 | 运算符 | 综合性 |
1 | ()[] | 从左到右 |
2 | ! +(正) -( 负)~ ++ -- | 从右往左 |
3 | */% | 从左到右 |
4 | +(加)-(减) | 从左到右 |
5 | << >> >>> | 从左到右 |
6 | < <= > >= | 从左到右 |
7 | == != | 从左到右 |
8 | & 按位与 | 从左到右 |
9 | ^ 异或 | 从左到右 |
10 | | 或 | 从左到右 |
11 | &&短路与 | 从左到右 |
12 | ||短路或 | 从左到右 |
13 | ? : | 从右往左 |
14 | = += -= *= /= %= &= ^= ~= <<= >>= >>>= | 从右往左 |