【Java基础】基础概念
2015-09-29 21:04
281 查看
Java 关键字
被Java语言赋予特定含义的单词
组成关键字的字母全部小写
goto和const作为保留字存在,目前并不使用
一般关键字在IDE中会高亮
Java标示符
给类,接口,方法,变量等起名字时使用的字符序列
由英文大小写字母和数字以及$和_组成,切不能为Java关键字,同时不能以数字开头
标示符区分大小写
Java 注释
为了对程序进行说明
单行注释 //注释内容
多行注释 /*注释内容*/
文档注释 /**注释内容 */
Java常量
执行程序过程中值不会发生变化
字符串常量 例如 "aba", "happy"
整数常量 例如 10,二进制表示(0b1010),八进制表示(0012),十进制表示(10,默认表示形式),十六进制表示(0x000A)
小数常量 例如 1.1,2.1等
字符常量 例如 'a', 'b',但是'ab'是错的
布尔型常量 例如 true,false
空常量 只有null
整数常量会有原码,反码,和补码的区别,所有数据的运算都是采用补码进行的;
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
Java变量
在程序执行的过程中,在某个范围内其值可以发生改变的量;
定义格式:数据类型 变量名 = 初始化值;
Java 数据类型
Java是强数据类型语言,内存上会区别不同类型内存的大小,下面是不同数据类型的区分表。
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929205926386-1608840466.png)
不同数据类型大小区分如下:
默认整数是用int表示,如果用long,记得数字后缀加L;默认小数用double表示,如果要用float,记得用F为后缀;
Java 类型转换
布尔型不支持转化
byte,short,char—int—long—float—double;
byte,short,char相互之间不能转换,他们参与运算首先转换为int类型;
强制转换: 目标类型 变量名=(目标类型)(被转换的数据);
注意点:
因为
默认有类型提升,byte和byte相加,先转换成int,然后将int赋值给byte会出现“可能损失精度”的报错;
但是 b = 3 + 4则不会报错,这是因为常量先把结果计算出来,然后看是否在byte范围内,如果在则不会报错;
所以变量是先讲类型进行提升,byte,short,char的计算,都是先到int,然后再去计算。常量在编译后就可以确定,而变量要运行后才能确定。
如果赋值出现溢出怎么办,例如有byte b = (byte) 131;
这时候计算机操作如下:
计算机会把131看作整数,所以在计算机中存储131为4个字节,如下:
0000 0000 0000 0000 0000 0000 1000 0011
然后赋值给byte,会先截取最后一个字节,所以b在计算机中存储的是1000 0011,记住,这是补码,最终输出的结果是原码。
补码: 1 000 0011
反码: 1 000 0010
原码: 1 111 1101
所以结果为:-125
Java 算术运算符
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929211726183-1842512398.png)
注意点:
除法中,整数和整数相除,得到的是整数
+号可以表示加法,正数和字符串的链接
System.out.println(8++);这句语句编译会出错,因为常量不能参与这种自增运算,++,--针对的是变量
Java 关系运算符
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929212120840-1611868655.png)
Java 逻辑运算符
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929213056402-625467412.png)
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
&,|,^:当两边出现的是布尔值时,做的是逻辑运算,最后结果为true或false;但,当两边为数值时,做的是位运算。
Java算术运算符
A:+,-,*,/,%,++,--
B:+的用法
a:加法
b:正号
c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和--的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;// b为11
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;//b为10
Java赋值运算符
A: =,+=,-=,*=,/=,%=等
B: =叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
short s = 1;
s = s + 1; //先做了类型转换到int,然后没有强制类型转换,会报出“可能损失精度的错误”
short s = 1;
s += 1;// 隐含了自动强制转换。不会报错
JAVA位运算符号
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:面试题
a:请实现两个变量的交换
**采用第三方变量:用一个temp中间变量来实现交换
**用位异或运算符(高效率)
** 用减法
** 一条语句实现交换
b:请用最有效率的方式计算出2乘以8的结果:2<<3
Java三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值
被Java语言赋予特定含义的单词
组成关键字的字母全部小写
goto和const作为保留字存在,目前并不使用
一般关键字在IDE中会高亮
用于定义数据类型的关键字 | ||||
class | interface | byte | short | int |
long | float | double | char | boolean |
void | ||||
用于定义数据类型值的关键字 | ||||
true | false | null | ||
用于定义流程控制的关键字 | ||||
if | else | switch | case | default |
while | do | for | break | continue |
return |
用于定义访问权限修饰符的关键字 | ||||
private | protected | public | ||
用于定义类,函数,变量修饰符的关键字 | ||||
abstract | final | static | synchronized | |
用于定义类与类之间关系的关键字 | ||||
extends | implements | |||
用于定义建立实例及引用实例,判断实例的关键字 | ||||
new | this | super | instanceof | |
用于异常处理的关键字 | ||||
try | catch | finally | throw | throws |
用于包的关键字 | ||||
package | import | |||
其他修饰符关键字 | ||||
native | strictfp | transient | volatile | assert |
给类,接口,方法,变量等起名字时使用的字符序列
由英文大小写字母和数字以及$和_组成,切不能为Java关键字,同时不能以数字开头
标示符区分大小写
Java 注释
为了对程序进行说明
单行注释 //注释内容
多行注释 /*注释内容*/
文档注释 /**注释内容 */
Java常量
执行程序过程中值不会发生变化
字符串常量 例如 "aba", "happy"
整数常量 例如 10,二进制表示(0b1010),八进制表示(0012),十进制表示(10,默认表示形式),十六进制表示(0x000A)
小数常量 例如 1.1,2.1等
字符常量 例如 'a', 'b',但是'ab'是错的
布尔型常量 例如 true,false
空常量 只有null
整数常量会有原码,反码,和补码的区别,所有数据的运算都是采用补码进行的;
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
Java变量
在程序执行的过程中,在某个范围内其值可以发生改变的量;
定义格式:数据类型 变量名 = 初始化值;
Java 数据类型
Java是强数据类型语言,内存上会区别不同类型内存的大小,下面是不同数据类型的区分表。
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929205926386-1608840466.png)
不同数据类型大小区分如下:
简单类型 | boolean | byte | char | short | Int | long | float | double | void |
字节数目 | 1 | 1 | 2 | 2 | 4 | 8 | 4 | 8 | -- |
封装器类 | Boolean | Byte | Character | Short | Integer | Long | Float | Double | Void |
Java 类型转换
布尔型不支持转化
byte,short,char—int—long—float—double;
byte,short,char相互之间不能转换,他们参与运算首先转换为int类型;
强制转换: 目标类型 变量名=(目标类型)(被转换的数据);
注意点:
byte b1 = 3, b2 = 4, b; b = b1 + b2;//会报错,可能损失精度 b = 3 + 4;//不会报错
因为
b = b1 + b2
默认有类型提升,byte和byte相加,先转换成int,然后将int赋值给byte会出现“可能损失精度”的报错;
但是 b = 3 + 4则不会报错,这是因为常量先把结果计算出来,然后看是否在byte范围内,如果在则不会报错;
所以变量是先讲类型进行提升,byte,short,char的计算,都是先到int,然后再去计算。常量在编译后就可以确定,而变量要运行后才能确定。
如果赋值出现溢出怎么办,例如有byte b = (byte) 131;
这时候计算机操作如下:
计算机会把131看作整数,所以在计算机中存储131为4个字节,如下:
0000 0000 0000 0000 0000 0000 1000 0011
然后赋值给byte,会先截取最后一个字节,所以b在计算机中存储的是1000 0011,记住,这是补码,最终输出的结果是原码。
补码: 1 000 0011
反码: 1 000 0010
原码: 1 111 1101
所以结果为:-125
Java 算术运算符
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929211726183-1842512398.png)
注意点:
除法中,整数和整数相除,得到的是整数
+号可以表示加法,正数和字符串的链接
System.out.println(8++);这句语句编译会出错,因为常量不能参与这种自增运算,++,--针对的是变量
Java 关系运算符
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929212120840-1611868655.png)
Java 逻辑运算符
![](https://images2015.cnblogs.com/blog/662060/201509/662060-20150929213056402-625467412.png)
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
&,|,^:当两边出现的是布尔值时,做的是逻辑运算,最后结果为true或false;但,当两边为数值时,做的是位运算。
Java算术运算符
A:+,-,*,/,%,++,--
B:+的用法
a:加法
b:正号
c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和--的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;// b为11
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;//b为10
Java赋值运算符
A: =,+=,-=,*=,/=,%=等
B: =叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
short s = 1;
s = s + 1; //先做了类型转换到int,然后没有强制类型转换,会报出“可能损失精度的错误”
short s = 1;
s += 1;// 隐含了自动强制转换。不会报错
JAVA位运算符号
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:面试题
a:请实现两个变量的交换
**采用第三方变量:用一个temp中间变量来实现交换
**用位异或运算符(高效率)
a = a ^ b; b = a ^ b; a = a ^ b;
** 用减法
a = a + b; b = a - b; a = a - b;
** 一条语句实现交换
b = (a+b) - (a=b);
b:请用最有效率的方式计算出2乘以8的结果:2<<3
Java三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值
相关文章推荐
- 使用 native2ascii.exe 将java utf-8编码批量转换为 ANSI.
- test8.17
- Ubuntu14.04配置jdk环境
- java String 和 int 相互转换
- Struts中对通配符的配置说明
- Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)
- (转)Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)
- test8.16
- Java应用服务器WildFly 推荐
- java文件处理相关技术
- java 操作excel 文件
- java基础
- java String 原理剖析
- JdbcHelper.java(JAVA连接数据库后的备忘录的增删改查)
- 深入剖析Java中的装箱和拆箱
- Java时间类型转换
- 浅析Java中的final关键字
- Java 格式化数字
- Java虚拟机10:类加载器
- NetBeans里几个比较实用的小方法