黑马程序员——java运算符、修饰符

时间:2023-02-18 20:34:16


 

 ------- android培训java培训、期待与您交流! ----------

——————————————————————————————————————————————— 


2、标示符(_ $)
数字不可以开头
不可以使用关键字
3、注释
单行注释//
多行注释/* */
文档注释/**  */
多行注释中间不能嵌套多行注释
4、常量与变量
1、整数常量
2、小数常量
3、布尔型常量
用0开头表示八进制
用0x开头表示十六进制


变量的概念。
内存中的一块存储区域。
整数类型
数值型
浮点类型
基本数据类型 字符型
数据类型 布尔型
 类
引用数据类型  接口
 数组
 
 
|——变量的生命周期


public static void main(String []args){
{
int x = 9;
System.out.println(x);
}

//System.out.println(x);   超出x的生命周期
}


|——自动类型提升
|——强制类型转换

ASCII
二进制和生活中文字的对应关系表
GB2312
GBK //扩展表
GB18030
Unicode 过你编码表

|---小面试题
byte b = 4;
byte b1 = 3;
byte b2 = 5;
b = b1 + b2;

System.out.println(b);
|---结果显示 可能损失精度
|---4 是int 型数值,自动转换类型后赋值给b
由于b1和b2是变量,进行转换后可能会超出范围。


5、运算符
算术运算符
赋值运算符
|-- b = a++; //a先把值赋给b,然后自加
b = ++a;//a先自加,然后赋值给b
|--  int i = 4; 
i = i++;
得到i的结果是4.i在进行自增的前提下要先将自己保存,然后赋值
|-- short s = 4;
s+=6; //得到结果s为10 它有一个自动转换过程
s = s+6; //编译出错  没有自动转换,需要强转
比较运算符
|--运算完的结果必须是true或者false
逻辑运算符
|--用于连接两个boolean类型的表达
&  与
true & true = true;
true & false = false;
false & true = false;
false & false = false;
只有&的两边都是true的时候 结果才是true
|  或
true | true = true;
true | false = true;
false | true = true;
false | false = false;
只要有一个是true,结果就是true
^  异或
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^两边如果相同结果为false
^两边如果不同结果为true
!  非
!true = false;
!false = true;
&& 短路
如果&&左边为false,右边就不进行判断
|| 
如果||左边为true,右边就不进行判断
位运算符  (0为假,非0既为真).
|-- 6&3 6|3 6^3
0110 0110 0110
  &0011 |0011 ^0011
  —————— —————— ——————
0010 0111 0101
&遇1得1   |遇0得0  ^相同得0
|--移位运算符 int型 4字节 32位
3<<2
0000-0000 0000-0000 0000-0000 0000-0011
<<2 0000-0000 0000-0000 0000-0000 0000-1100
左移 n位,就是该数据乘以2^n
右移 n位,就是该数据除以2^n(取)
|--对于高位出现的空位,用原高位填补
|-- >>> 无符号右移
数据进行右移时,高位出现的空位,无论原高位时什么,空位都用0补
|--运算效率
数据在内存中就是二进制。一般位运算能提高效率
|--数值转换的三种种方式;
|--第三方变量
int a = 3;
int b = 5;
//交换a,b的数值
int tmp;
tmp = a;
a = b;
b = tmp;
|--不使用第三方变量(不推荐使用,可能会出现数值过大,自动转换数据类型)
a = a + b;
b = a - b;
a = a - b;
|--使用位运算符(阅读性差,可以在面试的时候用)
a = a ^ b;
b = a ^ b;
a = a ^ b;
三元运算符
|--格式:
(条件表达式)?表达式1:表达式2;

6、程序流程控制
|--顺序结构
|--判断结构
1、 if(){}
2、 if(){}
else{}
3、 if(){}
else if(){}
else{}
|--当if else运算后,有一个具体结果时,可以简化成三元运算符
|--选择结构
switch语句
格式:
switch(表达式)
{
case val1:
执行语句1;
break;
case val2:
执行语句2;
break;
case val3:
执行语句3;
break;
......
default: //缺省
执行语句def;
break;
}
假如当value1匹配,没有遇到break结束,value2不进行判断。所以直接执行语句2
代码如下:
case val1:
case val2:
执行语句2;
break;
break用来结束switch语句,接近default的可以省去
switch 在遇到break或者大括号结束
|--if和switch的应用
if:
1,对具体的值进行判断,
2,对区间进行判断。
3,对运算结果是boolean类型的表达式进行判断。
switch:
1,对具体的值进行判断。
2,值得个数通常是固定的。
对于几个固定的值判断,switch会将具体的答案都加载到内存,效率更高一点
|--循环结构
while, do while, for
while(表达式){
执行语句;
}

do{
执行语句;
}while(表达式);

for(①初始化表达式;②循环条件表达式;③循环后的操作表达式){
④执行语句;
}
循环条件表达式必须是boolean类型
for循环的执行顺序
如果循环条件满足,执行顺序为①——>②——>④——>③——>②——>④——>③——>②——>④——>③...
//局部代码块
局部代码块中的变量在超出代码块时,生命周期就已经结束



7、所有的转义字符和所对应的意义:
转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符''\' 092
\' 代表一个单引号(撇号)字符 039
\" 代表一个双引号字符 034
\0 空字符(NULL) 000
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制所代表的任意字符 二位十六进制


windows系统中回车符是两个符号组成\r\n
linux中回车符是\n
8、break和continue
break:跳出
作用范围是循环体。
for(;;){
break;
执行语句;
}
上面的for循环编译失败。当break语句单独存在时,下面不要定义其他语句,因为执行不到
break跳出当前的循环,如果是在嵌套循环中使用,要跳出指定循环。可以增加标号;
outer:for(;;){
Inner:for(;;)
{
执行语句;
break outer;
}
}
continue:继续
作用范围循环结构
如果continue后面也有无法执行的语句,编译也不会通过。

 

 ------- android培训java培训、期待与您交流! ----------

———————————————————————————————————————————————