基础语法

基础语法
CyrexType 数据类型
数据类型分为基本数据类型与引用数据类型
基本数据类型 | 引用数据类型 |
---|---|
byte 整形(-2^7~2^7-1) | class 类(String 字符串类与 Date 类都包含在内) |
short 整形(-2^15~2^15-1) | interface 接口 |
int 整形(-2^31~2^31-1) | array 数组 |
long 整形(-2^63~2^63-1) | enum 枚举 |
float 单精度浮点数 | annotation 注解 |
double 双精度浮点数 | |
char 字符类 | |
boolean 布尔值(默认值为 false) |
注意:在java中浮点数的默认类型为double
类型转换
自动类型转换(Widening Casting)
自动类型转换是将一个小容量的数据类型转换为大容量的数据类型,这种转换是自动进行的,不需要强制转换符号
1 | int i = 100; |
自动类型转换遵循以下两种顺序
1 | byte -> short -> int -> long -> float -> double |
强制类型转换(Narrowing Casting)
强制类型转换,可以理解为自动类型转换的逆过程,将大容量的数据类型转换为小容量的数据类型,使用时需要在前面加上强制类型转换符号(),该符号应放在变量或数值前,内容为想要转化成的目标类型。
对引用类型进行强制转换时,又分为向上转型(upcasting)和向下转型(downcasting)
向上转型(upcasting)
向上转型是将一个子类引用赋给父类引用,这种转换是自动的,无需转换符
1 | class Animal {} |
向下转型(downcasting)
向下转型是一个父类引用赋给子类引用,需要转换符
1 | Animal animal = new Dog(); |
类型检查
Java在编译时会进行类型检查,此处检查的依据是对象的静态类型而非动态类型,因此有时需要在代码中添加显式的“强制类型转换”来“告诉”编译器此时这个对象该被视做什么,但实际上并未改变该对象类型
1 | Dog largerdog = (Dog)maxAnimal(animal1,animal2); |
但这种操作也有风险,一个重庆人一定是中国人,但一个中国人却不一定是重庆人,这就导致了可能发生类型转换错误:
1 | Dog dog = new Dog("大黄",3); |
以上代码使用了强制类型转换使得右侧的函数得以成功进行(使Java认为dog和cat都是Dog),但接下来返回了cat,此时又将cat赋值给了一个Dog类的largerdog(这是非法的),所以程序会崩溃。
Variables 变量
存储某种特定类型的值的命名
Eg:String fxxkSchool
从上可以看出变量的格式一般为“变量类型 变量内容”
operators 运算符
运算符可分为算数运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,条件运算符
算数运算符 + - * / % ++ —
运算符 | 功能说明 |
---|---|
+ | 作正号时表示正数属性;作加法运算符,用于数值相加;在与字符串操作时,用于连接字符串 。比如 +5 表示正 5 ,3 + 2 结果是 5 ,"Hello" + "World" 结果是 "HelloWorld" 。 |
- | 作负号时表示负数属性;作减法运算符,用于数值相减 。比如 -3 表示负 3 ,5 - 3 结果是 2 。 |
* | 乘法运算符,用于数值相乘 。例如 3 * 4 结果是 12 。 |
/ | 除法运算符,用于数值相除 。例如 6 / 2 结果是 3 。当参与运算的数都是整数时,结果为整数(向下取整),如 7 / 2 结果是 3 。 |
% | 取模(求余数)运算符,用于获取两数相除的余数 。例如 7 % 2 结果是 1 。 |
++ | 自增运算符,分为前置自增(++a ,先将变量值加 1 ,再参与其他运算 )和后置自增(a++ ,先参与其他运算,运算结束后变量值加 1 )。比如 int a = 3; int b = ++a; ,此时 a 和 b 都是 4 ;int c = 3; int d = c++; ,此时 c 是 4 ,d 是 3 。 |
– | 自减运算符,分为前置自减(--a ,先将变量值减 1 ,再参与其他运算 )和后置自减(a-- ,先参与其他运算,运算结束后变量值减 1 )。原理与自增运算符类似 。 |
一些小事
- 字符串间的串联通过“+”来连接的例子
1 | String text = “Fxxk” + ”you”; |
- “/”对于整形和浮点数的运作方式是不同的
1 | double a = 5/2 // a = 2.5; |
赋值运算符 =
=的功能为将其右边的值赋值给左边,由此还能衍生出一些赋值运算符比如+=,-=等等
Java始终会对类型进行验证是否匹配,你不能把一个整形赋值给字符串
比较运算符 == != < > <= >= instanceof
比较运算符的返回值为布尔值
其他的都没啥好说的,讲一下instanceof,该运算符只能用于引用数据类型,用于检查是否为类的对象,比如”hello” instanceof String的返回值为true
逻辑运算符 & | ! && || ^
逻辑运算符同样返回布尔值
运算符 | 名称 | 运算规则说明 | 示例 |
---|---|---|---|
& | 逻辑与 | 对多个布尔表达式进行“与”运算,只有当所有表达式结果都为 true 时,整个表达式结果才为 true ,且会判断所有条件。 |
boolean a = true; boolean b = false; boolean result = a & b; ,result 为 false 。 |
| | 逻辑或 | 对多个布尔表达式进行“或”运算,只要有一个表达式结果为 true ,整个表达式结果就为 true ,且会判断所有条件。 |
boolean a = true; boolean b = false; boolean result = a | b; ,result 为 true 。 |
! | 非 | 对单个布尔表达式取反,若原表达式为 true ,结果为 false ;若原表达式为 false ,结果为 true 。 |
boolean a = true; boolean result =!a; ,result 为 false 。 |
&& | 短路与 | 与逻辑与功能类似,当多个布尔表达式进行“与”运算时,只要有一个表达式结果为 false ,就不再判断后续表达式,直接返回 false ;只有所有表达式都为 true ,结果才为 true 。 |
boolean a = false; boolean b = true; boolean result = a && b; ,因为 a 为 false ,不会判断 b ,result 为 false 。 |
|| | 短路或 | 与逻辑或功能类似,当多个布尔表达式进行“或”运算时,只要有一个表达式结果为 true ,就不再判断后续表达式,直接返回 true ;只有所有表达式都为 false ,结果才为 false 。 |
boolean a = true; boolean b = false; boolean result = a || b; ,因为 a 为 true ,不会判断 b ,result 为 true 。 |
^ | 异或 | 对两个布尔表达式进行运算,当两个表达式结果不同时,结果为 true ;当两个表达式结果相同时,结果为 false 。 |
boolean a = true; boolean b = false; boolean result = a ^ b; ,result 为 true ;boolean c = true; boolean d = true; boolean result2 = c ^ d; ,result2 为 false 。 |
位运算符 << >> >>> & | ^ ~
位运算符能够对整数类型的二进制位进行操作
运算符 | 说明 |
---|---|
<< | 空位补0,被移除的高位丢弃,空缺位补0。 |
>> | 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补。 |
& | 二进制位进行&运算,只有1&1时结果是1,否则是0。 |
^ | 相同二进制位进行 ^ 运算,结果是0;1^1=0,0^0=0。不相同二进制位 ^ 运算结果是1;1^0=1,0^1=1。 |
~ | 正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反。 |
条件运算符 布尔表达式?表达式1:表达式2
先判断布尔表达式的结果是 true 还是 false,如果是 true,则选择表达式 1 的结果作为整个表达式的结果,反之则选择表达式 2 的结果作为整个表达式的结果。
循环语句
java中的循环语句分为三种:while,do/while和for循环
while循环
1 | while (条件表达式) { |
do/while循环
1 | do { |
for循环
1 | for (初始化表达式; 条件表达式; 迭代表达式) { |
方法 Method
Java中的方法类似于其它语言的函数,对某个功能的代码进行封装并为其命名,可以重复调用,所有的方法都需要定义到类中
1 | public static void METHOD(){ |
数组 [] array
数组是一组相同数据类型的集合,是一个容器(可以想象成相连的空间小方格,即每个元素空间是相连的),它可以存储基本数据类型和引用数据类型,数组本身是引用数据类型,在创建时必须指明长度,且后续无法对长度进行改变
创建数组的三个方法:
1 | int [] a = new int [3]; |
打印数组的三个方法:
1 | **//方法一:for循环** |
复制数组的方法:arraycopy(a,b,c,d,e)
从数组a的第b项开始复制,从数组c的第d项开始粘贴,共粘贴e项
1 | public static void main(String args[]){ |