强制类型转换(显式):代码需要进行特殊的格式处理,不能自动完成,大到小
int num=(int)2021112;
注意:
-
1.强制类型转换有可能发生精度损失、数据溢出。
-
2.byte / short / char这三种类型都可以发生数学运算,例如加法“+”.
-
3.byte/short/char这三种类型在运算的时候,都会被首先向上提升成为int类型,然后再计算。符合ASCII编码表。
六、运算符&表达式
=========
算术运算符
算术运算符:常见的四则运算符、自增、自减,它们的作用和在数学中的作用一样。
| 运算符 | 描述 | 例子 |
| — | — | — |
| + | 加 | 1+1-2 |
| * | 减 | 2-1=1 |
| * | 乘 | 2*5=10 |
| / | 除 | 10/2=5 |
| ++ | 自增 | int a=1;a++ or ++a =2 |
| – | 自减 | int a=1;–a or a-- =0 |
| % | 取余 - 左操作数除以右操作数的余数 | 24%=3 |
实例:
public class Test1{
public static void main(String[] args){
int a = 3;
int b = 3;
int x = 2*++a;
int y = 2*b++;
System.out.println(“自增运算符前缀运算后a=”+a+“,x=”+x);
System.out.println(“自增运算符后缀运算后b=”+b+“,y=”+y);
}
}
结果:
自增运算符前缀运算后a=4,x=8
自增运算符后缀运算后b=4,y=6
关系运算符
关系运算符:关系运算符有6种关系,分别为小于、大于、小于等于、大于等于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
| 运算符 | 描述 | 例子 | 结果 |
| — | — | — | — |
| > | 大于 | 2>1 | true |
| >= | 大于等于 | 2>=1 | true |
| < | 小于 | 2<1 | false |
| <= | 小于等于 | 2<=1 | true |
| == | 等于 | 2==1 | false |
| != | 不等于 | 2!=1 | true |
逻辑运算符
逻辑运算符:主要用于进行逻辑运算,连接两个Boolean值,代表两个条件。
假设布尔变量A为真,变量B为假
| 运算符 | 描述 | 例子 | 结果 |
| — | — | — | — |
| && | 与 | (A && B) | false |
| II | 或 | (AIIB) | true |
| ! | 非 | !(A && B) | true |
| ^ | 异或 | 2<=1 | (A ^ B) |
异或:有且只能有一个为true
实例:
public class Test2 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
System.out.println("(a^b) = " + (a ^ b));
}
}
结果:
a && b = false
a || b = true
!(a && b) = true
(a^b) = true
赋值运算符
赋值运算符:基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对该运算符往往最后读取。
| 运算符 | 描述 | 例子 | 结果 |
| — | — | — | — |
| = | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B | 将把A + B得到的值赋给C |
| + = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A | 等价于C = C + A |
| - = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A | 等价于C = C - A |
| * = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A | 等价于C = C * A |
| / = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A | C 与 A 同类型时等价于 C = C / A(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
| << = | 左移位赋值运算符 | C << = 2 | 等价于C = C << 2 |
| >> = | 右移位赋值运算符 | C >> = 2 | 等价于C = C >> 2 |
| &= | 按位与赋值运算符 | C&= 2 | 等价于C = C&2 |
| ^ = | 按位异或赋值操作符 | C ^ = 2 | 等价于C = C ^ 2 |
| I= | 按位或赋值操作符 | C I= 2 | 等价于C = C I2 |
位运算符
位运算符:位操作是程序设计中对位模式按位或二进制数的一元和二元操作。在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。
| 运算符 | 描述 | 例子 | 结果 |
| — | — | — | — |
| & | 如果相对应位都是1,则结果为1,否则为0 | (A&B) | -得到12,即0000 1100 |
| I | 如果相对应位都是 0,则结果为 0,否则为 1 | - (A | B) |
| ^ | -如果相对应位值相同,则结果为0,否则为1 | -(A ^ B) | -得到49,即 0011 0001 |
| 〜 | -按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | -(〜A) | -得到-61,即1100 0011 |
| << | -按位左移运算符。左操作数按位左移右操作数指定的位数 | -A << 2 | -得到240,即 1111 0000 |
| >> | -按位右移运算符。左操作数按位右移右操作数指定的位数 | -A >> 2 | -得到15即 1111 |
| >>> | -按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 | - A>>>2 | -得到15即0000 1111 |
实例:
//来源https://www.runoob.com/java/java-operators.html
public class Test2 {
public static void main(String[] args) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}
结果:
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
a >>> 2 = 15
其他运算符
条件运算符(?:):件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。 实例:
public class Test3 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? “不及格”:“及格”;//必须掌握
//if
System.out.println(type);
// System.out.println(type);
int score1 = 50;
String type1 = score < 60 ? “不及格”:“及格”; //必须掌握
//if
System.out.println(type1);
}
}
结果:
及格
及格
instanceof 运算符:该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。 实例:
String name = “Test”;
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
表达式
表达式:用运算符连起来的式子叫做表达式。由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。例如:20+5 。 又例如:a+b
在java中 以 ;结尾的一段代码,即为一个表达式
public class HelloWorld {
public static void main(String[] args) {
//每一句话都是一个表达式
int i = 5; //①
System.out.println(5); //②
; //③
; //④
; //⑤
}
}
七、数组
====
数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
实例:
public class Test4 {
public static void main(String args[]) {
int data[] = new int[3]; /开辟了一个长度为3的数组/
data[0] = 10; // 第一个元素
data[1] = 30; // 第二个元素
data[2] = 50; // 第三个元素
for(int x = 0; x < data.length; x++) {
System.out.println(data[x]); //通过循环控制索引
}
}
}
结果:
10
30
50
三种方法定义Java数组:
-
1.先声明 2.分配空间 3.赋值
-
1.声明并分配空间 2.赋值
-
1.声明并分配空间然后.赋值
实例:
public class Test5{
public static void main(String args[]) {
System.out.println(“-----方法一-----”);
int[] arr; //先声明
arr=new int[5]; //分配空间
for(int i=0;i<5;i++)arr[i]=i*10; //赋值
for(int i=0;i<5;i++){
System.out.println(“arr[”+i+“]=”+arr[i]);
}
System.out.println(“-----方法二-----”);
int[] arr1=new int[5]; //声明并分配空间
for(int i=0;i<5;i++)arr1[i]=i*10; //赋值
for(int i=0;i<5;i++){
System.out.println(“arr[”+i+“]=”+arr1[i]);
}
System.out.println(“-----方法三-----”);
int[] arr2={20,68,34,22,34}; //声明并分配空间然后.赋值 等同于 int[] arr= new []{20,68,34,22,34};
for(int i=0;i<5;i++){
System.out.println(“arr[”+i+“]=”+arr2[i]);
}
}
}
结果:
-----方法一-----
arr[0]=0
arr[1]=10
arr[2]=20
arr[3]=30
arr[4]=40
-----方法二-----
arr[0]=0
arr[1]=10
arr[2]=20
arr[3]=30
arr[4]=40
-----方法三-----
arr[0]=20
arr[1]=68
arr[2]=34
arr[3]=22
arr[4]=34
八、方法
====
方法:Java方法是语句的集合,这个集合一起执行能完成某个功能。
语法格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){
执行语句
………
………
return 返回值;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
起执行能完成某个功能。
语法格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){
执行语句
………
………
return 返回值;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-51iaX9to-1715351422953)]
[外链图片转存中…(img-FFOE5BqS-1715351422954)]
[外链图片转存中…(img-hyGGo7Ti-1715351422955)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!