Java基础知识回顾
Java基础
一、Java概述
1、Java技术体系平台
类型 | 简介 |
---|---|
JavaSE 标准版 | 支持面向桌面级的应用 |
JavaEE 企业版 | 支持为企业开发的应用 |
JavaME 小型版 | 运行在移动终端的平台 |
2、Java重要的特点
-
面向对象的语言(OOP)
-
健壮的语言,具有强类型转换、异常处理、垃圾自动回收
-
跨平台的语言,一个编译好的
(.class)
文件可以在多种系统上运行(运行在不同平台对应的JVM
虚拟机上)- Win版本JVM
- Linux版本的JVM
- Mac版本的JVM
-
解释型的语言,编译后的代码,需要在解释器上面进行运行(对应的编译型语言,编译后的代码,可以直接在机器上运行)
3、JDK,JRE、JVM
- JDK:(Java Development Kit) Java开发工具包
- JDK = JRE + java的开发工具【Java,javac,javadoc,javap等】
- JRE:( Java Runtime Environment ) java的运行环境
- JRE = JVM + JavaSE的标准类库
- 运行开发好的
.class
文件只需要JRE
- JVM:( Java Virtual Machine) Java的虚拟环境
java运行流程:
java类的组织形式:
4、Java开发细节
-
Java的源文件以
.java
为扩展名。源文件的基本组成是class
类 -
一个源文件最多只能一个
public
类,其他类的个数不限。文件名必须按该public
类名进行命名。 -
Java严格区分大小写
-
Java程序的入口是main方法,(可以写在非
public
类中)有固定书写格式:-
public static void main(String[] args){...}
-
二、变量
变量 = 变量名 + 值 + 数据类型
1、Java的数据类型
- 基本数据类型(8种)
- 整数类型
int
占四个字节short
占两个字节long
占八个字节byte
占一个字节
- 浮点类型
float
占四个字节double
占八个字节
- 字符型
char
两个字节
- 布尔型
boolean
一个字节
- 整数类型
- 引用数据类型
- 类
- 接口
- 数组
2、数据类型转换
java的类型转换有两种:一种是自动类型的转换,一种是强制类型的转换。
(1)自动类型转换
规则: 数据类型按精度大小进行自动转换
注意细节:
- 多种数据类型运算,会自动转换为容量最大的进行计算
- 在自动类型转换过程中,不能将精度大的数据类型转换为精度小的数据类型。
- (
byte
、short
)和char
不会自动转换
(2)强制类型转换
属于自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,同时需要加上强制转换符()
,可能会造成精度降低或者溢出的情况。
注意细节:
-
强制转换符只针对最近的操作数有效。
int x = (int)10*3.5 + 6*1.5; //报错 int y = (int)(10*3.2 + 6*3.5); //正常运行
-
char
类型可以保存int
类型的常量值,但是不会保存int
的变量值char c1 = 10000; //正常运行 int m = 100; char c2 = m; //报错 char c3 = (char)m; //正常运行
-
byte
和short
,char
类型在进行运算时,当做int
进行处理
基本数据类型和String类型的转换
-
基本类型转String
int n1 = 100; float n2 = 1.1f; double n3 = 1.2; boolean b1 = true; String s1 = n1 + ""; //直接加双引号便可以实现类型的转换 String s2 = n2 + ""; String s3 = n3 + ""; String s4 = b1 + ""; System.out.println("str1:"+s1+" str2:"+s2+" str3:"+s3+" str4:"+s4);
-
String类型转基本类型(调用基本类型的包装类,调用
parseXXX
方法Integer.parseInt("123"); //调用parseXXX方法 Double.parseDouble("123.4"); Float.parseFloat("123.45"); Short.parseShort("12"); Long.parseLong("123"); Boolean.parseBoolean("true"); Byte.parseByte("12");
三、运算符
1、算术运算符
平时最常用的运算符
运算符 | 运算 |
---|---|
+ | 正号、加号 |
- | 负号、减号 |
* | 乘号 |
/ | 除号 |
% | 取模(取余) |
++ | 自增,根据前后顺序分为,先运算后取值,和先取值后运算 |
– | 自减,根据前后顺序分为,先运算后取值,和先取值后运算 |
2、赋值运算符
将某个运算后的值,赋给指定的变量。
运算符 | 运算 | a 与b进行运算 |
---|---|---|
= | 等于号 | a = b, 为b赋值给a |
+= | 加于等于 | a += b,为 a = a + b |
-= | 减于等于 | a -= b,为 a = a - b |
*= | 乘以等于 | a *= b,为 a = a * b |
/= | 除以等于 | a /= b,为 a = a / b |
%= | 取余等于 | a %= b,为 a = a % b |
3、关系运算符
关系运算符的结果都是boolean
型的,经常用在if
或者循环结构中
运算符 | 运算 |
---|---|
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
4、逻辑运算符
连接多个条件(多个关系表达式),最终的结果是boolean
类型
- 短路与
&&
, 短路或||
, 取反!
- 逻辑与
&
, 逻辑或|
,逻辑异或^
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
5、位运算符
位运算符用于直接操作二进制位的运算,可以用来进行高效的位操作。在很多情况下,采用位运算的方法来进行计算可以提高运算效率
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与,对应位都为1时结果为1,否则为0 | 5 & 3 = 1 |
| | 按位或,对应位有一个为1时结果为1,两个都为0时结果为0 | `5 |
^ | 按位异或,对应位不同时结果为1,相同时结果为0 | 5 ^ 3 = 6 |
~ | 取反,对二进制数的每一位取反 | ~5 = -6 |
<< | 左移,将一个数的二进制位向左移动指定的位数 | 5 << 1 = 10 |
>> | 右移,将一个数的二进制位向右移动指定的位数 | 5 >> 1 = 2 |
>>> | 无符号右移,运算规则:低位溢出,高位补零 | 5 >>> 2 = 1 |
6、三元运算符
基本语法为: 条件表达式 ? 表达式1 : 表达式2;
运算规则:
- 如果条件表达式为
true
,运算后的结果是表达式1 - 如果条件表达式为
false
,运算后的结果为表达式2
int a = 1, b = 2;
//三元运算符
int ans = a > b ? a++ : b++;
//等价表达
if(a > b) ans = a++;
else ans = b++;
7、运算符优先级
优先级如下,最上面的优先级最高
运算符 | 描述 |
---|---|
(),{} | 括号 |
单目运算符(++、--、~、! ) | 单目运算符 |
算术运算符(*,/, %, +, - ) | 乘、除、取模、加、减等 |
移位运算符 (<<, >> ) | 左移、右移等 |
比较运算符 (>, <, >=, <= ) | 相等、不等、大于、小于、大于等于、小于等于 |
& | 按位与 |
^ | 按位异或 |
` | ` |
&& | 逻辑与 |
` | |
? : | 条件运算符 |
赋值运算符 (=, *=, /=, +=, -= ) | 赋值、加等于、减等于、乘等于等 |
8、标识符(变量)
标识符(变量)命名规则:
- 由26个英文字母大小写,
0-9
,_或$
组成 - 数字不可以开头
- 不可以使用保留字和关键字,可以包含保留字和关键字
- 严格区分大小写,长度无限制
- 不能包含空格
示例:
int 12ab = 10; //报错,开头不能是数字
int a b = 10; //报错,中间不能加入空格
int a# = 10; //报错,特殊字符只能是_或者$
int goto = 10; //报错,不能是保留字或者是关键字
标识符命名规范:
- 包名:多单词组成时,都是小写:
aaa.bbb.ccc
- **类名、接口名:**多单词组成时,所有单词的首字母都是大写:(大驼峰命名法)
- 举例:
TankShotGame
- 举例:
- 变量名、方法名:第一个单词首字母小写,第二个单词开始每个首字母大写(小驼峰命名法)
- 举例:
tankShotGame
- 举例:
- 常量名:所有单词都是大写
- 举例:比如所得税
TAX_RATE
- 举例:比如所得税
9、关键字
50个关键字如下表:
基本类型关键字 | 流程控制关键字 | 类、方法和变量相关关键字 | 访问控制关键字 | 异常处理关键字 | 其他关键字 |
---|---|---|---|---|---|
boolean | if | class | public | try | static |
byte | else | interface | private | catch | final |
char | switch | extends | protected | finally | synchronized |
double | case | implements | throw | transient | |
float | while | new | throws | volatile | |
int | do | return | this | ||
long | for | void | super | ||
short | break | package | |||
continue | import | ||||
default |
四、数组
1、数组的赋值机制
- 基本数据类型赋值,采用值传递的方式。
- 数组数据类型赋值,是采用引用传递的方式,赋的值是地址。
? 举例:
//基础数据类型赋值,是值传递
int a = 10;
int b = a; //a的值10,直接复制一份给b
b = 80;
System.out.println("a:"+a+ " b:" + b);
//数组的赋值,是引用传递,传递的是地址
int arr1[] = {1,2,3}; //假设arr1指向的地址为0x0011
int arr2[] = arr1; //那么arr2指向的地址也是0x0011,这个地址指向的内容是一样的
arr2[0] = 10; //arr2[0]修改的是0x0011地址指向的内容,所以arr1[0] = arr2[0] = 10;
System.out.println("arr1[0]:"+arr1[0]+ " arr2[0]:" + arr2[0]);
2、二维数组
主要是申请,二维数组可以通过静态申请和动态申请两种方式进行。
//静态申请,直接申请一个静态的二维固定长度数组
int arr1[][] = new int[2][3];
int arr2[][] = {{1,2,3},{4,5,6},{7,8,9}};
//动态申请,第一维长度先固定,后面根据需要设定第二维度的长度
int arr3[][] = new int[3][];
for(int i = 0; i < arr3.length; i++){
arr3[i] = new int[arr3.length];
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!