java的基础知识(二)
2021-01-21 14:14
标签:汉字 位移 默认 ace eof 标识符 位置 expand 等于 四种基础类型: 整数类型:如2,50,12等 整数的四种声明类型: byte: ---> 1字节 ---取值范围---> -128~127 short:---> 2字节 ---取值范围---> -32768~32767 int: ---> 4字节 ---取值范围---> -2147483648~2147483647 long: ---> 8字节 ---取值范围---> -9223372036854775808~9223372036854775807 浮点类型:如3.2,132.0,-12.1等 字符类型:如‘a‘,‘g‘,‘中‘等 布尔类型:true,false。布尔值只有两个 如何创建变量 1.创建整型变量 示例: 2.使用不同进制的整数赋值 10进制:例如,int a=44; 8进制:以0开头,例如:int b=044; 16进制:以0X或0x开头,例如:int c=0x44; float:在内存空间占用4个字节,取值范围: 1.4E-45~3.4028235E38 double:在内存空间占用8个字节,取值范围: 4.9E-324~1.7976931348623157E308 示例: 注意:近似值不精准 4.35*100 --四合五入法--> 使用java提供的四舍五入法Math.round(); 0.1==2.0-1.9 --最小数对比法--> 使用java提供取绝对值方法Math.abs()与最小数"1e-6"相比较 用单引号包含的可打印的单个符号,例如: ‘a‘ ‘5‘ ‘大‘ ‘#‘ ‘ ‘ ‘B‘ 不是字符的,例如: ‘word‘ "M" ‘5‘!=5 char 是整数 采用(Unicode编码) 取值范围0~65535 示例: 错误思路:写三个单引号不就行了: 1 char a=‘‘‘; 2 //注意:如果出现三个单引号,编译器就不知道从哪里开始,从哪里结束,肯定会报错 转义字符 含义 创建布尔类型 boolean: true false 注意:布尔类型只有两个值,其他的值都不可用。 标识符的概念:------名字 由任意的大小写字母(A~Z,a~z),下划线(_),美元符号($),数字(0~9)组成,注意:数字不能开头,不能为java中的保留关键字。 容易写错的标识符:20warrior(数字开头),public(关键字),one%two(有%号不合法),User Name(标识符单词之间有空格)等等。 正确的标识符:time,alp56,_interface,O_o,BGM,$$$等等。 标识符是严格区分大小写的,good和Good是两个不同的标识符。 例如: 1 String 名字="唐僧"; 2 String 职业="和尚";//汉字命名是不好的习惯,一旦字符序列使用的非GBk编码,会出现乱码 开发工具中变颜色的单词。 内存如何存储数据? 数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空间。 为什么需要变量? 为了解决内存地址不好记,内存地址如([C@30i126,[D@60e127等等) 语法: 数据类型 变量名称 = 变量值; 示例: 语法: final 数据类型 常量名称 = 常量值; 示例: 赋值运算符就是“=” 量 = 值 正确的例子: 错误的例子: (+)一元正号:+30,+50,+100 (+)加法运算符:x+y,5+32,a+b (+)拼接字符串:"Hello"+"Word" (-)一元负号:-30,-50,-100 (-)减法运算符:x-y,5-2,a-b (*)乘法运算:int a=6*2 (/)除法运算:int b=6/2 (%)取余运算符:double c=6.2%3.0 注意:使用除法运算符与取余运算符时,0不能做除数。 自增运算符 自减运算符 前置形式 ++a --a 语法 后置形式 a++ a-- 计算结果 a+1 a-1 注意:自增和自减都是单目运算符,不可以放在圆括号之外。例如:(a+b)++ --(x+y)等等 b=a++; b=++a; ↓ ↓ 结果: b=a;//先做赋值运算 a=a+1;//先做自增的运算 结果: a=a+1;//再做自增的运算 b=a;//再做赋值的运算 自减与上原理相同。 属于双目运算符,是用来判断一个操作数与另一个操作数之间的关系的运算符,计算结果是一个布尔值(true或false)。 数学中连续小于或连续大于:ab>a java中这么写可以吗?答案是:不可以,java中不能串联使用关系运算符,那么解决方案就是在他们之间使用逻辑运算符 位运算符分为两大类:位逻辑运算符、位移运算符。 1.位与运算 十进制12和8进行与运算 0000 0000 0000 1100 2.位或运算 十进制4和8进行或运算 0000 0000 0000 0100 4和8进行或运算结果是12 3.位异或运算 十进制31和22进行异或运算 0000 0000 0001 1111 4.位取反运算 十进制123进行取反运算 ~ 0000 0000 0111 1011 基本数据类型
1 byte a=12;
2 byte a=12,b=-13;
3
4 short a=153;
5 short a=153,b=-201;
6
7 int a=65231;
8 int a=65231,b=-5234;
9 int c=5+b;
10
11 long a=562314563L;
12 long a=452L,b=-532L;
13 long c=452L+532L;
14 //注意:创建long类型数值时需要给值后加上L或l,否则会导致数据精度的丢失。因为整数的默认类型是int类型,int的范围又没有long的数值范围大,
15 //当数值超出了int的取值范围又没有添加L或l的后缀时,精度会丢失,得到的数据比定义的小。
16
17 /**
18 *常见错误:
19 *long a = 123654789 * 987456321;
20 *正确的应该是:
21 *long a = 123654789L * 987456321L;
22 */
浮点数的两种声明类型
1 float a=1.1f;
2 float a=1.1F,-2.4f;//float 修饰的值必须加F或f后缀
3
4 double a=3.1415926;
5 double a=3.1415926,b=-3.1415926;
6 double c1=1.0D,c2=3.1d,c3=-2.6;//double修饰的值可以加D或d后缀,也可以不加,因为它是java默认的浮点类型
字符类型的概念
char类型
1 char a1=‘a‘; char b1=‘汉‘; char c1=‘2‘
2 char a2=97; char b2=27721; char c2=50;//以上这两种赋值方法的结果相同的
如何给char变量赋值单引号:
转义字符
\‘ 单引号字符
\" 双引号字符
\\ 反斜杠字符
\t 垂直制表符,将光标移动到下一个制表符的位置
\r 回车
\n 换行
\b 退格
\f 换页布尔类型
变量与常量
标识符与关键字的概念
标识符使用汉字
标识符的命名规范
类名
方法名
变量名
常量名
类名
方法名
首单词字母小写,后续单词首字母大写。例如:sisterName,lightName
常量名
关键字
变量:变量的值是可以改变的
如何声明变量?
1 int a=1;
2 long b=456321L;
3 char c=‘p‘;
4 boolean flag=true;
常量:开发过程不需要更改,甚至不允许更改的量
常量的声明
final int a=654;
final double PI=3.1415926;
赋值运算符
做写的操作,被赋予等号右侧的值 做读取的操作,可以是常量、公式1 int i=5,j=6,k=8; //定义整型变量i、j、k
2 final int value=3; //定义整型常量
3 i=9; //变量=常数
4 k=i+j; //变量=表达式
5 a=b=c=d=4; //变量=变量=变量=常量
9=a; //不能赋值给常量
i+k=j; //右值不能被赋值
算术运算符
运算符
说明
实例
结果
+
加
23.56f+10
33.56
-
减
6.32-0.3
6.02
*
乘
5L*13.56f
67.8
/
除
9/4
2
%
取余
9/4
1
加法与减法运算符
乘法、除法与取余运算符
自增和自减运算符
前置与后置的区别
关系运算符
运算符
说明
实例
结果
==
等于
5==6
false
小于
5
true
>
大于
5>6
false
小于等于
8
true
>=
大于等于
9>=9
true
!=
不等于
8!=3
true
如何同时使用多个关系运算符
逻辑运算符
运算符
含义
实例
结果
&&
逻辑与
A&&B
(真)与(假)=假 --->一假为假
||
逻辑或
A||B
(真)或(假)=真 --->一真为真
!
逻辑非
!A
不(真)=假 --->杠精
位运算符
位逻辑运算符
运算符
含义
实例
&
与
a&b
|
或
a|b
~
取反
~a
^
异或
A^b
位移运算符
运算符
含义
实例
左移位
a
(>>)
右移位
b>>4
(>>>)
无符号右移
x>>>2
位逻辑运算结果
A
B
A&B
A|B
A^B
~A
0
0
0
0
0
1
1
0
0
1
1
0
0
1
0
1
1
1
1
1
1
1
0
0
& 0000 0000 0000 1000
————————————————————————
0000 0000 0000 1000
12和8进行与运算结果还是8
| 0000 0000 0000 1000
————————————————————————
0000 0000 0000 1100
^ 0000 0000 0001 0110
————————————————————————
0000 0000 0000 1001
31和22进行异或运算结果是9
————————————————————————————
1111 1111 1000 0100
123进行取反运算结果是-124位逻辑运算的逻辑结果
A
B
A&B
A|B
A^B
true
true
true
true
false
true
false
false
true
true
false
true
false
true
true
false
false
false
false
false
位移运算
左移
1 2的零次方 0000 0000 0000 0001 初始值=1
1 2的1次方 0000 0000 0000 0010 左移一位=2
1 2的2次方 0000 0000 0000 0100 左移两位=4
注意:每次的结果=原来的2倍是在符号位没有发生改变的情况下。
示例:
short a=9115 0010 0011 1001 1011
a 0 0100 0111 0011 0110 溢出舍去
a 00 1000 1110 0110 1100 溢出舍去
右移>>每次的结果=原来的2分之一
32768 ...1000 0000 0000 0000 2的15次方
32768>>1 高位补零 ...0100 0000 0000 0000 2的14次方
32768>>2 ...0010 0000 0000 0000 2的13次方
整数右移之后还是正数。
负数右移,高位补1,就保证了其还是一个负数。
示例:
-32768 ...1000 0000 0000 0000 -的2的15次方
-32768>>1 高位补1 ...1100 0000 0000 0000 -的2的14次方
-32768>>2 ...1110 0000 0000 0000 -的2的13次方
无符号右移
例如:
-32766 1111 1111 1111 1111 1000 0000 0000 0010
初始值
补0 0111 1111 1111 1111 1100 0000 0000 0001 0 结果=2147467265
无符号右移一位 溢出舍去
补0 0011 1111 1111 1111 1110 0000 0000 0000 10 结果=1073733632
无符号右移两位 溢出舍去
无符号右移,高位一律补零。
注意:byte和short类型不适合用无符号右移,它俩属于低精度的整型,无符号右移的结果往往不准确。
三元运算符
语法:
返回值=判断公式?结果1:结果2;
要求:判断公式是返回一个布尔值的公式
如果公式返回的是true,运算符结算返回结果1
如果公式返回的是false,运算符结算返回结果2
?
示例:
int a=2;
int b=a最终的到的结果b=2
int c=5;
int d=c最终的到的结果d=36
运算符优先级
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | () |
2 | 自增,自减,逻辑非,正负号,取反 | ++,--,!,+,-,~ |
3 | 乘,除,取余 | *,/,% |
4 | 加,减 | +,- |
5 | 左移位,右移位,无符号右移位 | >,>>> |
6 | 小于,小于等于,大于,大于等于,判断继承关系 | ,>=,instanceof |
7 | 等于,不等于 | =,!= |
8 | 与 | & |
9 | 异或 | ^ |
10 | 或 | | |
11 | 并且 | && |
12 | 或者 | || |
13 | 赋值 | =,+=,-=,*=,/=,%=,>=,&=,^=,|=,>>>= |
总结:
1.从操作数个数来看,单目运算符的优先级高于双目运算符优先级
2.按照运算符的作用来看,()这种级别最高,之后依次是算术运算符,位运算符,关系运算符,逻辑运算符,赋值运算符。
数据类型转换
遵循的原则:勿以小杯盛大物
不同类型占用的计算机内存空间不同的,例如byte--->int--->long的内存空间依次增大的,小的往大的转换不会溢出,大的转换成小的可能会溢出。
两种转换方式
-
隐式转换(自动转换)
byte a=10; short b=a; int c=b; long d=c; float e=d; double f=e;
char
byte ---> short ---> int ---> long ---> float ---> double
char的取值范围内,char和int试兼容的。
示例:
1 char a=‘A‘; 2 int b=a-3; 3 //结果b=62; 4 //运行代码如下: 5 public class Demo { 6 public static void main(String[] args) { 7 char a=‘A‘; 8 int b=a-3; 9 System.out.println(b); 10 } 11 }
2.显示转换(强制转换)
语法: (类型名)要转换的值 例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int a=101; 4 byte b=(byte)a; 5 System.out.println(b); 6 } 7 }
低精度向高精度转换的时候可以用隐式转换,也可以用显示转换,
但,高精度向低精度转换的时候,只能使用显示转换,而且有可能造成数据丢失。
例如:
1 public class Demo { 2 public static void main(String[] args) { 3 float a= (float) 3.1415926; 4 System.out.println(a); 5 } 6 }
结果造成了数据失准。
再例如:
1 public class Demo { 2 public static void main(String[] args) { 3 float a= (float) 3.1415926; 4 int i= (int) a;//小数点丢失 5 System.out.println(i); 6 } 7 }
再例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int a=130; 4 byte b=(byte)a; 5 System.out.println(b); 6 } 7 }
代码注释
代码的注释与编码规范
注释:就是对代码的解释和说明。
注释范围内的任何内容都不会被计算机编译执行。
注释的作用:是给开发者看的,便于读懂你写的代码,也便于开发与维护(简单来说就是,说明文字,删除冗余,调试代码)。
注释的三个种类
1 //这里是单行注释 2 3 /* 4 这里 5 是 6 多行注释 7 */ 8 9 /** 10 这里 11 是 12 文档注释 13 */
前两种常用,是帮助我们添加解释说明和调试程序的,后面一种是帮助我们生成文档的,其实java的API就相当于文档注释生成的
编码规范
不以规矩不能成方圆
我们应该遵循的代码规范
1 int a=5; 2 int b=3; //尽量使每个变量的声明单独占用一行。 3 4 public static viod; //关键字与关键字之间只认一个空格,多个空格属于冗余,没有用 5 Person().list[2][5].getId(); //不要使用技术性很高、难懂、易混淆的语句 6 String name="王五"; //创建名字,对于关键的方法要多加注释。
常见的错误
1.分号报错了,有可能写的是中文的分号,输入英文下的分号即可解决。
2.方法错了,有可能是我们输入了中文下的引号,输入英文下的引号即可解决。
java的基础知识(二)
标签:汉字 位移 默认 ace eof 标识符 位置 expand 等于
原文地址:https://www.cnblogs.com/Aimblogs/p/12895976.html
上一篇:数组对象与ArrayList
下一篇:拓扑排序