2、java语言基础的形成

2.1 关键字被赋予特殊含义的字符。

2.2 标示符又英文字母、数字、_、$组成。

1、数字不能放在开头。

2、不能使用关键字。

2.3 注释

2.4 常量与变量

1、整数常量:所有整数。

2、小数常量:所有小数。

3、布尔型常量:较为特有,只有两个数值,true和false。

4、字符常量:‘a’ ‘b’ ‘+’  将一个数字、字母或符号用单引号(‘’)标示。

5、字符串常量:将一个或多个字符用双引号标识。“ab” “hello word” “a” “”(“”表示空内容的字符串)。

6、null常量:只有一个数值,就是null。

变量:将不确定的数据进行存储。也就是需要在内存中开辟一个空间。

如何开辟空间?就是通过明确数据类型、变量名称、数据来完成。


数据类型分为:基本数据类型和引用数据类型。


Java 常量顿号 java符号常量的定义_数据


       整数默认int类型,浮点数默认double类型。

2.5 运算符
    2.5.1算术运算符
两个int型做运算,结果仍然是int型,小数部分舍弃。
double型和int型做运算,结果是double型。double是8字节,int自动提升。
1%-5 等于1;-1%5等于-1,也就是说,模的结果的正负只和左边数字有关。
int a = 3,b;声明两个变量a和b,但只有a有值。定义变量时尽量有初始值。
a++和++a都意味,给a加1,然后把值再赋给a,相当于a = a + 1,a的结果一样,都是一次运算;b = a++;先将a的值赋给b,a再加1并赋给a自己;b = ++a;a先加1并赋给a自己,再把a的值赋给b,都是两次运算。自减也是同理。
+,字符串连接符,必须是字符串相连接。字符串数据和任何数据用+连接,最后得到的数据都是字符串。“ab”+5+5;打印ab55,+都是连接符;“ab”+(5+5);打印ab10,后一个+做加号使用。注意:+在不同地方代表不同含义。为了让打印结果有意义,格式:System.out.println("a=" + a + "," + "b=" + b);
 
转义字符:通过\来转变后面字母或符号的含义,仍然是字符类型。
\n:表示换行。一下内容另起一行。char ch = ‘\n’;表示一个回车符的字符。
\b:表示退格。向前进一格,相当于backspace键。
\r:按下回车键。前面内容取消。
\t:制表符。向后退出一段距离,相当于tab键。
\”:一个双引号。char ch = ‘\”’;表示双引号字符。
\\:一个反斜线。char ch = ‘\\’;表示单引号字符。
println中的ln表示括号内的内容打印完毕后,换行一次。print不换行。
Linux中,换行由\n表示;windows中,换行由\n和\r表示,dos中用\n。
2.5.2 赋值运算符
符号:=、+=、-=、*=、/=、%=,都是一个符号。可以自动类型转换。
int x = 3; 把右边的值赋给左边。x += 4;将左右两边的和赋给左边。
short s = 4; s +=5; 只有一次赋值运算,+和+=运算符都有自动类型转换动作,使得类型保持一致。a=b=c=5;也可以。
 
2.5.3 比较运算符
注意:比较运算符的结果都是boolean型。
 
2.5.4 逻辑运算符
逻辑,代表着关系。作用:连接布尔类型的表达式。例如,x>3 & x<6;——》true&true——》true。运算表达式可以直接打印,输出结果为ture或false。可以连续使用,例如x==3||x==4||x==5。

true & true = true;         true | true = true;     true ^ true = false;
 true & false = false;        true | false = true;     true ^ false = true;
 false & true = false;        false | true = true;     false ^ true = true;
 false & false = false;       false | false = false;    false ^ false = false;


&特点:只要两边布尔表达式结果有一个为false,结果就是false;两边都是true,结果才是true。| 特点:只要两边布尔表达式结果有一个为true,结果就是true;两边都是false,结果才是false。^ 异或:和 | 不太一样,就是true ^ true = false; 两边相同,结果为false;两边不同,结果为true。
!true = false;    !false = true;
&:无论左边是真是假,右边都运算;
&&:当左边是假时,右边不运算;
|:两边都运算;
| |:左边是真时,右边不运算。
 
2.5.5 位运算符
    位运算都是对二进制进行运算。
    x << n 相当于x乘以2的n次幂;例如,3<<2 = 12
    x >> n 相当于x除以2的n次幂;例如,6>>2 = 1
    主要用于乘、除运算,非常方便。
    >>:最高位补什么由原有数据的最高位值来定。带符号右移,正负可以继续。
    >>>:最高位无论是什么,全部补0。
    &:0视为假,1视为真。
    ~:取反。例如,-6是6取反加1,6的取反就是-7.
   
x ^ n ^ n = x,一个数异或另一个数两次,结果仍是这个数。主要用于加密。
练习
2乘以8的高效方法。2*8,在底层仍然是二进制运算,只是每个位上都要乘一次,需要运行32*32次,非常麻烦。所以一般都是位运算,2<<3。
将两个变量互换位置,n=3,m=8。一般方法:int temp = n; n= m;m=temp;使用第三方变量。
n = n + m; m = n - m; n = n - m; 不使用第三方变量,但是必须在int的范围内,易损失精度。n = n ^ m;m = n ^ m;n = n ^ m; 也可以。
将二进制转换为十六进制,步骤:&15然后再右移4位,直到结果为0.
将二进制转换为八进制,步骤:&7然后再右移3位,直到结果为0.
    获得二进制,步骤:&1然后再右移1位,直到结果为0.
 
2.5.6 三元运算符
    (条件表达式)?表达式1:表达式2
    条件为true,选择表达式1执行;
    条件为false,选择表达式2执行;
    表达式,就是有一定语法规则的语句,可以含有运算符,但一定有结果,例如,x*2。2个表达式在做运算,内部有自动类型转换,需要注意表达式的数据类型。必定有结果返回。
    例如:取最大值。int x = 3, y = 4, z; z = (x > y)?x:y。z变量存储的是较大的数。
   
2.6 程序流程控制(语句)
    顺序结构,从上向下依次执行。
 
2.6.1 判断结构
if语句,三种格式:
    
内部为条件表达式,运算的结果只有true和false。用if控制某些语句的执行,满足了才执行,只控制{}里的内容。如果只有一条语句,{}可以不写,if只控制距离最近的单条语句。
if else 只能执行一个代码块,肯定有结果。简写格式:变量=(条件表达式)?表达式1:表达式2,和三元运算符类似。
三元运算符,好处:可以简化if else 代码;弊端:作为一个运算符,运算完后必须有结果。但if else不需要结果返回。
虽然有很多行,但是单条语句。if  else if …else,是一个整体,只要有一个条件被执行,就结束,即使可以满足其他条件也不会再执行。
正确数据运算,不正确数据给用户一提示。
 
2.6.2 选择结构
    switch语句,switch、case、break、default。case用于定义备选答案,后面的值就是答案的具体内容。break,跳出switch语句。default,缺省默认,后面的break可以省略。
    特点:
    1.选择的类型只有4个:byte、short、int、char
    2.case与default没有顺序,但是先从case开始执行,没有匹配的case再执行default。位置是随意的,但执行是从case开始。例如,做选择题。
    3.结束情况:遇到break,或者执行到switch语句结束。
    4. 满足条件执行后如果没有break,程序会继续向下执行,遇到break或者switch结尾结束。
    这样也可以:case 3: case4: case5:
    对区间判断、对结果为布尔型判断使用if更合适;switch适合判断具体的数值不多、而且符合4中类型的数据,效率比较高。