目录
基本概念
关键字
被Java语言赋予特定意义的单词。
经过一周学习所接触与了解的关键字:byte short int long float double boolean char class array interface if switch case for new final public
Java中的所有关键字:
abstract | double | int | super |
assert | else | interface | switch |
boolean | enum | long | synchronized |
break | extends | native | this |
byte | final | new | throw |
case | finally | package | throws |
catch | float | private | try |
char | for | protected | void |
class | goto | public | volatile |
const | if | return | while |
continue | implements | short | |
default | import | static | |
do | instanceof | strictfp |
注释
单行注释://
多行注释:/**/
文档注释:/***/
注释的目的:提高代码的阅读性,方便自己也方便别人理解代码。
标识符
给Java中 的类,接口,方法起名字。(尽可能的见名知意)
标识符的规则和注意事项:
组成规则
只能以大小写字母,数字,下划线和美元符号($)组成。
注意事项
1)不能以数字开头;
2)不能使用@ ,#以及空格等特殊字符;
3)不能含有Java关键字;
4)Java严格区分大小写。
以下为Java的命名规则
给类和接口命名时使用大驼峰命名法(一个单词时首字母大写),给变量和方法命名时使用小驼峰命名法(一个单词时单词全部小写)。
给常量名命名一个字母时全部大写,多个字母时,每个字母首字母大写,中间用下划线连接起来。
//给类和接口起名,一个单词时首字母大写
class Demo{}
//多个单词时每个单词首字母大写
class SwitchDemo{}
interface TheFirst{}
//给变量和方法命名,一个单词时全部小写
int str;
//多个单词时,第二个单词开始首字母大写
int theFirstDemo = sc.nextInt();
//给常量命名一个单词时全部大写
int NUM = 25;
//多个单词时,全部大写,中间用下划线连接
float FIRST_NUM = 3.1415f;
常量
程序执行过程中,其值不发生改变。
常量分类
字面值常量和自定义常量。
字面值常量:整数常量,小数常量(double和float),布尔常量,空常量,字符常量(单引号括起来的字符,只能是单个字符),字符串常量(双引号括起来的字符串)。
变量
程序执行过程中,其值不断发生改变。
变量三要素
数据类型 变量名 初始化值
数据类型
基本数据类型(又称内置数据类型)和引用数据类型。
基本数据类型:四类八种
四类:整数,浮点,布尔,字符
整数又分为:byte,short,int,long
引用数据类型:类 接口 数组
注意事项
定义long和float类型时需要在变量值后加上L/l和F/f;
数据类型转换
自动转化和强制转换
自动转换:
将小数据转换为大数据
byte short char参与运算时,自动提升为int
强制转换:
大数据转换为小数据
强转格式: 目标数据类型 变量名 = (目标数据类型)变量值;
//举例,int型转换为short型
int a;
int b;
short c;
(short) c = (short)(a + b);
//(目标数据类型) 变量名 = (目标数据类型)(变量值);
变量与变量,常量与常量相加问题
变量相加:必须考虑变量数据类型问题(java中的数据类型自动提升)
常量相加:看结果是否在最终接收数据的数据类型范围之内。(主要是byte 取值范围为-128--127)
//举例byte b = 300;
byte b = 300;
/*
300 00000000 00000000 00000001 00101100 截取对应的byte类型(1个字节)
截取 00101100 (补码)
求出其原码
正数原反补相同,所以
byte b = 300;的运算结果为 32+8+4=44
*/
Java中的常见运算符
算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 三元运算符
算数运算符
++和--:++和--在变量之前:变量先自增或自减1再返回结果
++和--在变量值后:先返回结果,再自增或自减1
赋值运算符
== += = *= /= %=
重点:除=外其余都隐藏了强制类型转换
short s += 5;
//类似于s = s + 5;
//等价于short s = (short)(s + 5);
关系运算符
特点:连接的表达式无论是简单的还是复杂的,最终结果只能是true或false。
逻辑运算符
重点:&和&&的不同。
&:若表达式左边为false,右边的表达式仍然会进行运算。
&&:若表达式的左边为false,不再运行右边表达式。
位运算符于逻辑运算符的区别
位运算符连接的是两个具体的数值--->具体的结果数据
逻辑运算符只能连接表达式--->true/false
int a = 2;
int b = 9;
int c = 5 & 8;//位运算符连接具体的数值
//逻辑运算符连接表达式,表达式的结果只能是true或false
int d = (a<c && b>c) //连接表达式
位运算符
按位与&,按位或 |,按位异或^,按位取反~
按位与&:两个数值进行按位与运算,在其二进制数上按位进行比较,有0对应位则为0,否则为1.
按位或 |:同上在二进制数上按位进行比较,有1对应位则为1,否则为0.
按位异或^: 同上个在二进制数上按位进行比较,相同时为0,不同时为1.
按位异或特点:一个数据被另一个数据异或两次,结果说是它本身。
按位取反~:一个数值,在其二进制上按位取反(0变1,1变0)
计算机存储正整数是存储其数值的原码,存储负数是存储其补码.
负数取反:
1)先将负数化为二进制数,再求出二进制数的补码(负数计算机存储的为补码)
2)对补码的每一位(包含最高符号位)按位取反,取反之后的二进制数对应的十进制为正数;
3)得到最终结果的补码即为原码(因为正数的原反补相同)
4)计算出最终的结果
//举例
//按位与&
9 & 15
9 1001
15 1111
结果 1001
8+0+0+1=9
//按位或 |
13 | 3
13 1001
3 0011
结果 1011
8+0+2+1=11
//按位异或
11 ^ 3
11 1011
3 0011
结果 1000
8+0+0+0=8
//按位取反~
//对正整数进行取反
~7
7 00000000 00000000 00000000 00000111 原码
~ 11111111 11111111 11111111 11111000 补码
11111111 11111111 11111111 11110111 反码
符号位不变,其余按位取反
10000000 00000000 00000000 00001000 原码
结果为:-8
//对负数进行取反
~(-5)
-5 10000000 00000000 00000000 00000101 -5的原码
11111111 11111111 11111111 11111010 反码
11111111 11111111 11111111 11111011 补码
---------------------------------------------------------
对补码按位取反(包含符号位)
00000000 00000000 00000000 00000100 补码(原,反,补都相同)
结果为:4
移动符号:
左移<<,右移>>,无符号右移>>>
左移<<:将最高位丢弃,给右边补0.
特点:将<<符号左边的数乘以2的移动次幂即为移动结果
右移>>:符号位为0,左边补0,符号位为1,左边补1
特点:将>>符号左边的数除以2的移动次幂
无符号右移>>>
特点:无论最高符号位为0还是1,都给左边补0
//举例
//左移<<
int a = 2<<3; // 2 10 <<3 (000)00000 00000000 00000000 00000010000
结果为:2*2*2*2=16
//右移>>
int b = 36 >> 2; // 36 100100 >>2 00000000000 00000000 00000000 001001(00)
结果为: 36/2/2=9
//无符号右移>>>
int c = 32 >>> 3; // 32 100000 >>>3 00000000000 00000000 00000000 00100(000)
结果为:4
三元运算符
格式: 数据类型 变量名 = (判断条件) ? value1 : value2;
判断条件为真时,将value1赋值给变量,否则将value2赋值给变量
嵌套:
//举例
//三元运算符的嵌套
int a = 8;
int b = 19;
int c = 21;
int max = (a>b)?((a>c)?a:c):((b>c)?b:c);
以上内容仅作为个人学习记录.