来源:Day02 数据类型转换、运算符、方法入门
得分率92%:Day02 数据类型转换、运算符、方法入门
参与计算的数据的数据类型必须一致,不一致会发生转换。
Java自动将取值范围小的类型自动提升成取值范围大的类型。
规则:byte、short、char→int→long→float→double
我们手动将取值范围大的类型强制降成取值范围小的类型。
转换格式:数据类型 变量名=(数据类型)被转数据值
注意:1.浮点→整数,损失精度;2.int→short,数据可能丢失
American Standard Code for Information Interchange): 美国信息交换标准代码。让计算机识别人类文字,文字对应十进制数。
0~9 =48~57
A~Z=65~90
a~z=97~122
public static void main(String[] args){
char x='A';
int y=1;
//字符类型和int类型计算
System.out.println(x+y); //a对应65,结果为66
}
6类7型:+、-、*、/、%、++、–,算术运算符得到的都是整数。
自增自减运算符:++i(变量前++)、i++(变量后++)
单独运算→++i和i++一样,变量+1
混合运算:
a=1;b=++a→a=2,b=2
a=1;b=a++→a=2,b=1
public class AutoIandDOperator{
public static void main(string[] args){
int a=1;
/*int b=++a;
System.out.println(a);//2
System.out.println(b);//2
*/
int b=a++;
System.out.println(a);//2
System.out.println(b);//1
}
}
+遇到字符串表连接
“a”+“b"→"ab”
“5+5=”+5+5 →5+5=55
将符号右边的值赋给左边变量。6型:=、+=、-=、*=、/=、%=。
i+=5→i=i+5
两个数据间进行比较,输出为布尔值true/false。6型:=、>、<、>=、<=、!=。
连接两个布尔类型结果,输出为布尔值true/false。3型:&&短路与、||短路或、!取反
格式:数据类型 变量名=(布尔类型表达式?结果1:结果2)
布尔表达式结果为true,三元运算整体为结果1赋给变量;否则为结果2。
public class TernaryOperator {
public static void main (string[] args){
int i=(1>2?2;3);
System.out.println(i);//3
}
}
方法就是把代码单独定义在一个大括号内,形成单独的功能,需要这个功能的时候,就可以调用,解决代码冗余现象。
格式:
修饰符 返回值类型 方法名(参数列表){
代码...
return;
}
public static void methodName(){
System.out.println("这是一个方法");
}
【注意事项】
1.方法定义顺序无所谓
2.方法与方法之间不能嵌套包含
3.方法定义好后不会执行,如果想执行,一定要调用
调用定义好的方法才可以运行
public class HelloWorld
{
public static void main(String[] args)
{
//调用myHobby方法
myHobby();
}
//定义方法被main调用才可运行
public static void myHobby()
{
System.out.println("eat");
}
}
//三元运算方法
public class HelloWorld{
public static void main(String[] args){
ternaryOperator();
}
public static void ternaryOperator(){
int i=(1==2?7:9);
System.out.println(i);
}
}
方法定义:
1.必须定义在一类中、方法外
2.方法不能定义在另一个方法里
public class Demo{
public static void main(String[] args){
}
//方法正确写法:类中mian方法外
public static void apple(){
System.out.pritln("苹果");
}
}
public class Demo{
public static void main(String[] args){
//方法错误写法:mian方法或其他方法内
public static void apple(){
System.out.pritln("苹果");
}
}
}
是JDK9以来新特性
下面的程序有问题吗?
public class Demo{
public static void main(String[] args){
short i=1;
i+=1;
System.out.println("i");
}
}
i+=1→i=(short)(i+1)
因为+=是一个运算符,只运算一次带强制转换;
若i+=1换成逻辑上的i=i+1,则运算两次,i+1为int赋值给short i则报错。
下面的程序有问题吗?
public class Demo{
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1+2;
byte b4=b1+b2;
System.out.println(b3);
System.out.println(b4);
}
}
b3可以输出,b4不可。
因为
b3=1+2,1和2为常量,javac编译器自动计算出结果3未超过byte取值范围;
b4=b1+b2,b1和b2是变量,javac编译器不确定计算机结果是否超出范围,因此会将结果默认为int,此时赋值范围大于byte则编译失败。