一、数据类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
1.1 自动转换
package demo01;
/**
* @author 王旭阳
*/
public class ZiDong {
/**
当数据类型不一样时,将会发生数据类型转换
自动类型转换(隐身)
1.特点:代码不需要进行特殊处理
2.规则:数据范围从小到大。
*/
public static void main(String[] args){
//这是一个整数类型,默认值就是int类型
System.out.println(1024);
//这就是一个浮点数,默认就是double类型
System.out.println(3.14);
// long int
//符合小范围到大范围,发生自动转换
long num1 = 100;
System.out.println(num1);
// double float
//符合小范围到大范围,发生自动转换
double num2 = 2.5F;
System.out.println(num2);
// float long
//符合小范围到大范围,发生自动转换
float num3 = 100L;
System.out.println(num3);
}
}
1.2 强制转换
package demo01;
/**
* @author 王旭阳
*/
public class QiangZhi {
/**
* 强制类型转换
* 1. 特点:代码需要进行特殊的格式处理,不能自动转换
* 2. 格式:范围小的类型 范围小的变量名 = (范围小的)原本范围大的数据
*/
public static void main(String[] args) {
//int num = 100L;
//不兼容的类型: 从long转换到int可能会有损失
//long类型不能自动转为int类型 需要强制类型转换
int num = (int) 100L;
System.out.println(num);
}
}
1.3 注意事项
1.强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出
2.byte/short/char这三种类型都可以发生数学运算,例如加法“+”
3.byte/short/char这三种类型在运算时,都会被首先提升成为int类型,在运算。
4.boolean类型不能发生数据类型转换
//强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出
//long强制转换成int类型
int num1 = (int) 6000000000L;
//运行结果1705032704
System.out.println(num1);
//double强制转换int类型
//运行结果 3 精度损失
int num2 = (int) 3.5;
System.out.println(num2);
//byte/short/char这三种类型都可以发生数学运算,例如加法“+”
char zifu = 'A'; //ASCIIS中是65
System.out.println(zifu+1); //结果66
//byte/short/char这三种类型在运算时,都会被首先提升成为int类型,在运算。
byte num3 = 40;
byte num4 = 50;
//byte num5 = num3 + num4;
//不兼容的类型: 从int转换到byte可能会有损失
byte num5 = (byte) (num3 + num4);
System.out.println(num5);
二、 运算符
2.1 算数运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
– | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//ctrl+d
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
2.1.1 “+”运算符的用法
“+”常见的三种用法
1.对于数值来说,就是加法
2.对于字符来说,在计算机之前,char会被升级为int,然后计算
3.对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作
任何数据类型和字符串进行链接的时候,都会变成字符串
//字符串类型的变量基本使用
//数据类型 变量名称 = 数据值
String str1 = "hello";
System.out.println(str1); //hello
System.out.println("hello"+"world");//helloworld
//任何数据类型和字符串进行链接的时候,都会变成字符串
String str2 = "java";
System.out.println(str2 + 10);//java10
//优先级问题
//当String+int+int时
//=String + int
//=String
System.out.println(str2 + 20 +30);//java2030
2.1.2 自增自减
++自增: 操作数的值增加1
–自减: 操作数的值减少1
++ –
a++ 先赋值在加减
++a 先加减在赋值
2.2 赋值运算符
基本赋值运算符:就是一个等号“=”,代表将右侧的数据交给左侧的变量
int a = 30
赋值运算符:
+= a += 3 相当于 a = a + 3
-= a -= 3 相当于 a = a - 3
*= a *= 3 相当于 a = a * 3
/= a /= 3 相当于 a = a / 3
2.3 比较运算符
下表为Java支持的关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
public class Demo03 {
public static void main(String[] args) {
//关系运算符
int a = 10;
int b = 20;
System.out.println(a==b);
System.out.println(a>b);
System.out.println(a<b);
}
}
2.4逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
public class Demo05 {
public static void main(String[] args) {
//与 或 非
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(b&&a)); //逻辑运算符:两个变零都为真,结果为true
System.out.println("a || b:"+(b||a));//逻辑或运算符:两个变零有一个为真,则结果为true
System.out.println("!(a && b):"+!(b&&a));//如果为真则为假,如果为假则为真
//短路运算符
int c = 5;
boolean d = (c<4)&&(c++<4); //在与运算符中第一个值为假 不执行后面的值 (c++<4)未执行
System.out.println(d);
System.out.println(c); //结果为5
}
}
2.5 条件运算符
格式:
数据类型 变量名称 = 条件判断 ?表达式A :表达式B;
流程:
首先判断条件是否成立:
如果成立true,那么将表达式A值赋值给左侧的变量
如果不成立为false,那么将表达式B的值赋值给左侧的变量;
二者选其一。
注意事项:
- 必须同时保证表达式A和表达式B都符合左侧数据类型的要求
- 三元运算符的结果必须被使用
int max = a > b ? a : b;
三、方法入门
3.1 概述
java方法类似于其他语言的函数,是一段用来完成特定功能的代码片段
//点外卖
//用户
System.out.println("打开外卖软件");
System.out.println("选菜");
System.out.println("下单");
//商家
System.out.println("商家收到信息");
System.out.println("制作");
System.out.println("出餐");
//外卖员
System.out.println("外卖员取餐");
System.out.println("配送");
//用户
System.out.println("收到外卖");
System.out.println("吃");
3.2 方法定义
定义一个方法格式
public static void 方法名称(){
方法体
}
方法名称的命名规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含任意条语句
public class FangFa {
public static void main(String[] args) {
}
public static void user(){
//用户
System.out.println("打开外卖软件");
System.out.println("选菜");
System.out.println("下单");
}
public static void business(){
//商家
System.out.println("商家收到信息");
System.out.println("制作");
System.out.println("出餐");
}
public static void takeout(){
//外卖员
System.out.println("外卖员取餐");
System.out.println("配送");
System.out.println("收到外卖");
}
}
4.3 方法调用
调用 格式:
方法名称();
public static void main(String[] args) {
user();
business();
takeout();
}