------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
关键字的定义:就是被java赋予特殊意义的单词。
关键字的特点:关键字中所有的单词字母都为小写。
class:类
interface:接口
整型
byte,short,int,long
浮点型
float :单精度
double:双精度
char:字符型
boolean:布尔型,只有true和false
void:无类型
true:真(对)
false:假(错)
null:空值
选择
if ,else ,switch ,case,default
循环
while,do,for
跳出
break
继续
continue (标红的两个语句容易弄混,break是跳出循环,而continue是直接进入下一次循环)
返回
return
private:私有
protected :保护(包之间传递使用这个来设置权限与private相似)
abstract:抽象
final:最终形态,修饰的类不能被继承,修饰的函数(方法)不能被重写(复写),修饰的变量最多只能赋值一遍并且值不可变(一般用在常量上)
static:静态
synchronized:同步(进程中的安全问题解决办法。)
implements:实现,实现接口。
new:为实例分配内存空间
this:函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。
super:super关键和this作用类似,不过super是用在子类中,目的是访问直接父类中被屏蔽的成员。
(this,super的解释直接度娘牟盖东的博客中所摘录的)
instanceof:用来在运行时指出对象是否是特定类的一个实例
try
catch
finally
throw
throws
package:包
import:引用包
native
strictfp
transient
volatile
assert
定义:标识符就是在程序中定义的一些名称
标识符组成:由26个字母(大小写)、数字0~9、符号:_ $组成
定义合法标识符的规则:
1.标识符不能以数字开头。
2.标识符不可以使用关键字。
在java中是严格区分大小写的,所以使用关键字时使用大写字母是可以的,但是起名时为了提高程序的阅读性,尽量使用有意义的名称。
包名:多单词组成时所有的字母小写
xxxyyyzzz
类名,接口名:多单词组成时首字母大写,其他字母小写。
XxxYyyZzz
变量名和函数名:多单词,第一个词的首字母小写,其他单词首字母大写,其他字母小写。
xxxYyyZzz
常量名:所有字母大写,用下划线相连接。
XXX_YYY_ZZZ
常量的定义:常量就是表示不能改变的数值。
1.整数常量,即所有整数。
2.小叔常量
3.布尔型常量:true,false
4.字符常量,用‘’引号内引起来的就是字符常量。
5.字符串常量,用“”引起来的
6.null常量
四种:二进制,八进制,十进制,十六进制
十进制:一般0~9
八进制:逢7进1,用0表示开头(容易混淆,为了提高程序阅读性,一般不用八进制)
十六进制:0~9,A~F,用0x表示开头。
二进制:
十进制转换二进制方法:
原理:对十进制数进行除2运算。
在java中使用的代码是:Integer.toBinaryString() //用来转换二进制。
二进制转换十进制
其他进制转换
二进制转换16进制:
四个二进制数组成一个16进制数。
所以:
0101-1010
5 A
那么01011010转换为十六进制就是5A。
同理,八进制就是3个二进制组成,
6的二进制为110
那么-6的表现形式为
把6取反,然后加一
在计算机中,负数以其正值的补码形式表达
取反就是取起反码的方法,而加一就是原数值的补码。
定义:将不确定的数据进行存储,也就是需要在内存中开辟一个空间。
变量的名称是变量名。
为变量开辟内存空间的类型叫做数据类型。
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间(图片直接拿来的)
整型:占用字节
byte(1):-2的7次方~2的7次方减一
short(2):-2的15次方~2的15次方减一
int(4):-2的31次方~2的31次方减一
long(8):-2的63次方~2的63次方减一
浮点类型:占用字节
float:4个字节
double:8个字节
布尔类型:
true false两个值
演示一下如何定义数据类型:
long L= 100L;float F = 3.1t;
主要演示这两个,一般用来区分int和long,float和double,在这两种后面加上l与t。
boolean类型不参与转换。(因为boolean值是常量,默认只有俩个值,要么true,要么false)
自动类型提升,从小到大的提升。
(byte,short,char) --> int --> long --> float --> double
一般在计算的时候java中的数据类型会自动同步到一种数据类型再进行计算,如果不会损失精度(从小到大的运算),会自动进行数据类型的转换。
比如:
int a = 5;
short b = 6;
a = a+b;//在计算中b会自动提升成int型,计算完赋值给a。
强制类型转换,从大到小的转换。
intb;b=(byte)(b+2)
如果可以接受精度的损失,那么可以用强制转换来对数据类型进行从大到小的转换。
格式
(数据类型)数据;
表达式的数据类型自动提升
所有byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型。
如果一个操作数是float型,计算结果就是float型。
如果一个操作数是double型,计算结果就是double型。
分析:
System.out.println(‘a’)与System.out.println(‘a’+1)的区别。
System.out.println(‘a’)打印的是a。
System.out.println(‘a’+1)打印的是98,自动类型提升,把a转换成ASCII编码值(97)与1相加。
取模运算,即取余数10%4 = 2
5%5 = 0
5%1 = 0
当右边大于左边的时候,取左边的值
1%5 = 1
2%4 = 2
自增++,自减--,这两个运算涉及到先增后增的问题,一定要注意理清思路。
字符串:与任意数据使用最后结果都是字符串,用+相连。
通过\来完成,使用\来转变后面字符字母或符号的意义。
\n:换行
\b:退格
\r:回车
\t:制表符相当于tab键
(lunix中换行是\n win中换行是\r 和\n)
赋值运算符:
= :比如int x = 3;//就是把3赋值给x。
+=,-=,/=,*=,%=
x+=4;//等价于x = x+4;
比较运算符:
==相等于
!=不等于
< 小于
>大于
<=小于等于
>=大于等于
instanceof比较对象
逻辑运算符
& 与
|或
!非
^异或:与|相似,区别是全是true的时候为假,有一个为true为真
重点说下短路&&和||,
&&和||与&和|的结果是一致的。那么既然叫短路肯定有不一样的地方。
&的时候,无论左边还是右边都是运算的。
&&的时候,先运算左边的如果左边的结果是false,那么不会运行右边的比较,如果是true那么与&的方式一样。
同理||运行左边的时候,如果是true那么就不会运行右边的。
&&与||的运行效率高于&与|。所以这个小细节就会体现出程序员水平的高低。因为大型项目中会有无数的判断,那么使用好效率高的代码会大大提高运行的效率。
右移>>
就是转换成二进制进行右移两位,如果最后两位有值,那么会损失右边两位的精度,最左边会进行补位,如果是正数左边补零、是正数左边补一。
左移<<
与右移相似,就是向左移动两位,最左边补零。
无符号右移>>>
与右移相似,但是无论正负数左边补零
一般把1看为true,把0看为false
与运算:
110
& 011
-------------
010
或运算
110
| 101
------------
111
异或运算
11010
^ 10100
----------------
01110
非运算,即取反,或者说去原来数值的反码。
一个数异或两个一样的数,值与原来一样。(用来进行加密)
位运算是比一般的运算更有效率
总结,这一篇基本上把关键字,变量,常量和运算记了一遍。
其实,对于以上的语法,看视频的话还是有一些疏漏,比如:
在Math类中,包含了各种数学函数和常量
比如平方根:
使用Math.sqrt(y)//y的平方根
幂运算:
使用Math.pow(x,y)//x的y次幂,x与y为double型,返回值也是double型
三角函数
Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2
对数函数与指数函数运算
Math.exp//指数函数
Math.log//对数函数
常用无理数常量(近似值):
π
Math.PI
e
Math.E
JDK5之后不用加Math前缀,导入相应包就可以了。
(网上找的最容易理解的顺序)
该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。