《Java基础学习笔记》JAVA基础


Java语言基础组成
--------------------------------------
关键字 标识符 注释 常量和变量 运算符 语句 函数 数组
--------------------------------------
标识符
--------------------------------------
在程序中自定义的一些名称
由26个英文字母大小写,数字:0-9,符号:_$组成 定义合法标识符规则:
1.数字不可以开头。
2.不可以使用关键字。
Java中严格区别大小写。
注意:在起名字的时候,为了提高阅读性,要尽量有意义
---------------------------------------
Java中的名称规范
---------------------------------------
包名:多单词组成时所有字母都小定。
类名和接口名:多单词组成时,所有单词的首字母大写。
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词的首字母大写。
常量名:所有字母都大写。多单词时每个单词用下划线连接。
---------------------------------------
注释(略)
---------------------------------------
常量与变量
---------------------------------------
常量表示不能改变的数值。
java中常量的分类:
1.整数常量。所有整数
2.小数常量。所有小数
3.布尔型常量。较为特殊,只有两个数值。true false。
4.字符常量。将一个数字字母或者符号用单引号('')标识。
5.字符串常量。将一个或者多个字符用双引号标识。
6.null常量。只有一个数值就是:null
对于整数:
java有三种表现形式:
1.十进制:0-9,满10进1
2.八进制:0-7,满8进1.用0开头表示
3.十六进制:0-9,A-F,满16进1,用0x开头表示。
----------------------------------------
进制的由来
----------------------------------------
任何数据在计算机中都是以二进制的形式存在的。
二进制早起由电信号开关演变而来。
一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
所以就想把一大串缩短点,将二进制中的三位用一位表示。
这三位可以取到的最大值就是7,超过7就进位了,这就是八进制。

但是对于过长的二进制变成八进制还是较长,所以出现了用4个二进制表示一位的情况, 四个二进制位最大是15,这就是十六进制。

规律:进制越大,表现形式越短。
-----------------------------------------
进制转换
-----------------------------------------
1.二进制和十进制之间的转换。
十进制-->二进制。
6的二进制。
原理:对十进制数进行除2运算。 Integer.toBinaryString(6)

二进制-->十进制
原理:二进制乘以2的过程。
110
0*2(0)+1*2(1)+1*2(2)
    0 +    2 +    4 = 6

0  0  1  1  0  1  0  1
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 53
0  0  32   16   0  4  0  1

0删除

5 + 4 = 9
101 + 100 = 9

101 + 100
------------
   1001 = 9

2.其它进制转换
转成16进制,四个二进制位就是一个十六进制位。

90 的二进制为
0101  1010
5  A

转成八进制 三个二进制位代表一位

001 - 011 - 010
1  3  2

3.负数的二进制表现形式
6 = 110
-6 = 其实就是6的进制取反+1
取反:将二进制的1变成0,0变成1.

 0000-0000 0000-0000 0000-0000 0000-0110
 ---------------------------------------
 1111-1111 1111-1111 1111-1111 1111-1001
+0000-0000 0000-0000 0000-0000 0000-0001
-------------------------------------------
 0000-0000 0000-0000 0000-0000 0000-1010 = -6

负数的最高位都是1
---------------------------------------
变量
---------------------------------------
定义:就是把不确定的数据进行存储,
也就是需要在内存中开辟一个空间。

如何开辟内存空间?

数据类型:
1.基本数据类型
 1)数值型
  a.整数类型:byte/short/int/long
  b.浮点类型:float/double
 2)字符型 char
 3)布尔型 boolean
2.引用数据类型
 1)类 class
 2)接口 interface
 3)数组 []

整数默认:int
小数默认:double

定义变量的格式:
数据类型 变量名 = 初始化值;
int x = 0;

什么时候定义数量?
当数据不确定的时候。需要对数据进行存储时。
就定义一个变量来完成存储动作。
------------------------------------
逻辑运算符
------------------------------------
true & true = true;
true & false = false;
false & false = false;
false & true = false;
&:只要两边的boolean 表达式结果,有一个为false,那么结果就是false.
只有两边都为true,结果才会是true;

true | true = true;
true | false = true;
false | true = true;
false | false = false;

|:只要两边的boolean表达式结果有一个是true,那么结果就是true.
只有两边都false,结果才会是false.

true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;

只有两边boolean表达式结果相同时,结果为false,否则为true.

!false = true; !true =false;
!: 反转boolean表达式结果.

&& 与短路,|| 或短路
&和&&的特点:
&:无论左边的boolean表达式结果是true、false.右边都运算。
&&:当左边为boolean表达式结果是false时,右边不运算。

|:两边都参与运算。
||:当左边boolean表达式结果为true时,右边不运算。
----------------------------------------
位运算符
----------------------------------------
<< 左移
其实就是乘以2的移动位数次幂。
6>>2=1
6/2(2)=1

6>>1=3
6/2=3

3<<2 = 3*2(2)

>> 右移
就是除以2的移动位数次幂。

>>> 无符号右移
>>:最高位补什么由原有数据的最高位值而定,如果最高位为0,那么右移后用0补空余。
如果最高位为1,右移后,用1补位。
>>>:无论最高位是0,还是1,右移后都用0补。

&:
6 & 3

  6 = 0000-0000 0000-0000 0000-0000 0000-0110
&:3 = 0000-0000 0000-0000 0000-0000 0000-0011
---------------------------------------------
  2 = 0000-0000 0000-0000 0000-0000 0000-0010
 
注意:1=true,0=false;

|:
6 | 5 = 7
  6 = 0000-0000 0000-0000 0000-0000 0000-0110
|:5 = 0000-0000 0000-0000 0000-0000 0000-0101
------------------------------------------------
  7 = 0000-0000 0000-0000 0000-0000 0000-0111
 
^:
6 ^ 5 = 3
  6 = 0000-0000 0000-0000 0000-0000 0000-0110
^:5 = 0000-0000 0000-0000 0000-0000 0000-0101
-------------------------------------------------
  3 = 0000-0000 0000-0000 0000-0000 0000-0011
 
一个数异或同一个数两次,结果还是那个数:7^4^4=7
 
~:反码
~6 = -7
1.转为2进制:
0000-0000 0000-0000 0000-0000 0000-0110
2.取反:
1111-1111 1111-1111 1111-1111 1111-1001
3.减1
 1111-1111 1111-1111 1111-1111 1111-1001
-0000-0000 0000-0000 0000-0000 0000-0001
-----------------------------------------
=1111-1111 1111-1111 1111-1111 1111-1000
4.取反
 0000-0000 0000-0000 0000-0000 0000-0111 = 7
5.结果
~6 = -7
-----------------------------------------
判断结构:if else if
-----------------------------------------
选择结构:switch case break defalut
特点:
1.switch语句选择的类型只有四种:byte/short/int/char。
2.case之间与default没有顺序,先执行第一个case,没有匹配的case执行default.
3.结束switch语句的两种情况:遇到break,执行到switch语句结束。
4.如果匹配的case或者default没有对应的 break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break;switch结尾结束。

if和switch很像,具体什么场景下应用那个语句呢?
如果判断的具体数值不多,而且符合byte/short/int/cahr这四种类型。
虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。

其它情况:对区间判断,对结果为boolean类型判断,使用 if,if的使用范围广。
-----------------------------------------

原文地址:https://www.cnblogs.com/cxmsky/p/2845815.html