Java_Basic_Day02-类型转换+运算符+方法

1.类型转换

1.1自动转换

范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为int

byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

1.2强制转换

将取值范围大的类型强制转换成取值范围小的类型

格式转换:

数据类型 变量名 = (数据类型)被转数据值;
int i = (int)1.5;

1.3注意事项

浮点转成整数,直接取消小数点,可能造成数据损失精度;

int 强制转成short 砍掉2个字节,可能造成数据丢失;

// 定义s为short范围内最大值
short s = 32767;
// 运算后,强制转换,砍掉2个字节后会出现不确定的结果
s = (short)(s + 10);

1.4ASCII码

public static void main(String[] args) {
//字符类型变量
char c = 'a';
int i = 1;
//字符类型和int类型计算
System.out.println(c+i);//输出结果是98
}

tips:在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。char类型提升为了int类型。char类型内存2个字节,int类型内存4个字节;

0:48
9:57
A:65
Z:90
a:97
z:122

2.运算符

2.1混合运算:

变量前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2;

public static void main(String[] args) {
int a = 1;
int b = ++a;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是2
}

变量后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b的结果是1;

public static void main(String[] args) {
int a = 1;
int b = a++;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是1
}

2.2赋值运算


赋值运算符,就是将符号右边的值,赋给左边的变量;

2.3比较运算

比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true 或者false;

2.4逻辑运算


逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true 或者false;

2.5三元运算

格式:

数据类型 变量名 = 布尔类型表达式?结果1:结果2

三元运算符计算方式:
布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量;
布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量;

3.方法

格式:

修饰符 返回值类型 方法名 (参数列表){
      代码...
      return ;
}

3.1方法调用

将三元运算符代码抽取到自定义的方法中,并调用;

public static void main(String[] args) {
//调用定义的方法operator
operator();
}
//定义方法,方法中定义三元运算符
public static void operator() {
int i = 0;
i = (1==2 ? 100:200);
System.out.println(i);
int j = 0 ;
j = (3<=4 ? 500:600);
System.out.println(j);
}

3.2注意事项

方法必须定义在一类中方法外;
方法不能定义在另一个方法的里面;

3.3+=运算扩展

public static void main(String[] args){
    short s = 1;
    s+=1;
    System.out.println(s);
}
分析: s += 1 逻辑上看作是s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围
大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算, += 是一个运算符,只运算一次,并带有强制转换的特点,
也就是说s += 1 就是s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2;




猜你喜欢

转载自blog.csdn.net/a1032818891/article/details/80763154