学习笔记
一、数据类型转换 1)byte,short,char 之间不参与转换,它们参与运输的时候会直接转换为int类型 2)有多种类型参与运算,结果以数据类型大的为准 2.强制类型转换 3.编译器对常量的优化 二、运算符 +符号的其他用途 ++(自增)和–(自减)运算符 2)混合使用 后++(–): 先用,后加(减) 总结:不管++(–)放在前面还是后,最终都得+1或者-1 2.赋值运算符 += -= *= /= %=: 把左右两边的运算结果,重新赋值给左边 注意:扩展的赋值运算,隐含有一个强制类型转换 3.比较运算符 ==和=的区别 4.逻辑运算符 短路效果:如果左边已经能决定整个式子的结果,右边不运算 注意:逻辑运算符的左右两边表达式结果必须是boolean 5.三元运算符 案例1:求两个整数的最大值 案例2:定义一个int类型的整数,判断整数是否>60,满足条件输出"及格",否则输出"不及格" 三、方法入门 方法格式: 方法的调用格式:方法名(); 方法的注意事项 测试代码: Java第三天学习内容链接: https://blog.csdn.net/LJN951118/article/details/88703702
1.自动类型转换
特点:数据范围从小到大的转换【不会改变数据大小】
【byte是奔奔类型的停车位,short是小轿车类型的停车位,int是SUV类型的停车位,long是皮卡车类型的停车位,float是货车类型的停车位,double是大货车类型停车位
如果把奔奔停在小轿车等比自己大的类型的停车位是可以的,但是你要把大货车停止比自己小的停车位就不可以了,会发生溢出。】
byte
每一个字符都有与之对应的整数,char类型和int类型有一个对应关系(ASCII编码表)
特点:数据范围从大到小的转换【有可能改变数据大小】
格式:目标数据类型 变量名=(目标数据类型)被转换的数据;
int a=127;
byte b=(byte)a; //把变量a强制转换为byte类型
常量优化:如果=右边都是常量,编译器会把常量先运算,再赋值
byte a=3+4; //正确: 等价于 byte a=7
byte b=a+1; //错误:a是变量,会自动提升为int,结果也是int类型,不能用byte接收
1.算数运算符: + - * /(除法) %(取模)
/(除法):整数相除,结果也是整数
%(取模):取余数
1)+和数值运算: 【加法运算】
int a=3;
int b=a+4;
2)+和字符运算:【把字符转换为int,再做加法运算】
char x=‘a’;
int y=x+1; //把’a’转换为int类型的97,再+1,y=98
3)+和字符串运算:【字符串连接符】
String str=“hello”; //String表示字符串的类型
System.out.println(str+10+20); //hello1020
System.out.println(10+20+str); //30hello
System.out.println(str+(10+20));//hello30
1)单独使用
++(自增)、–(自减)放在操作数前面和后面没有区别,都代表自增或者自减
int a=3;
a++; //a的值变为4
System.out.println(a); //4
int y=3;
–y; //y的值也变为2
System.out.println(y); //2
前++(–):先加(减),后用
int a=3;
int b=++a; //先让a自增1,再把自增后的结果赋值给b
System.out.println(b); //4
System.out.println(a); //4
int a=3;
int b=a++; //把a的值赋值b,之后a再自增1
System.out.println(b); //3
System.out.println(a); //4
=:把右边的结果,赋值给左边
int a=10; //把整数10赋值给左边的int类型变量a
short a=3;
a+=3; //a+3后的结果,重新赋值给a
System.out.println(a); //6
short a=3;
a+=3; //等价于 a=(short)(a+3);
> >= < <= == !=
==:判断两个数据是否相等
=: 把右边的值赋值给左边
&(与):左右两边都是true,结果才是true
|(或):左右两边都是false,结果才是false
!(非): 取反,true变false,false变true
&&(双与): 左边为false,右边不参与运算
||(双或): 左边为true,右边不参与 运算
【实际运用的时候,用的是&&和||】
格式: 条件判断 ? 表达式1: 表示式2;
执行流程:
1) 先计算条件判断的结果是true还是false
2) 如果是true,就执行表达式1
如果是false,就执行表达式2
int a=4;
int b=3;
//三元运算的结果,必须被使用
int max=a>b?a:b;
System.out.println(“最大值为:”+max);
System.out.println(“最大值为:”+(a>b?a:b));
int score=98;
//把三元运算的结果赋值给result
String result=score>60?“及格”:“不及格”;
System.out.println(result);
//把三元运算的结果直接打印
System.out.println(score>60?“及格”:“不及格”);
方法:用来对特定功能的代码进行封装,从而提高代码的复用性
public static void 方法名(){
方法体;
}
注意:方法调用可以在任意位置调用
1)方法定义没有顺序
2)方法不调用,不执行
3)方法与方法之前是平级的,不能嵌套定义
public class Test02{
public static void main(String[] args){
//自动类型转换的复习
byte a = 10;
int b = 12;
System.out.println(a+b);//22
//加号+有运算和连接作用,当含有字符串,编译器自动把字符串即其后面的其他类型的内容默认为字符串并连接起来
System.out.println("结果是:"+a+b);//结果是:1020
System.out.println("结果是:"+(a+b));//结果是:22//小括号的优先级最高,所以运算时最先运算小括号的内容得到结果后再和前面的字符串做连接
System.out.println("--------------------");
//byte short char参与运算时会自动转为int型
byte a1 = 10;
short b1 = 11;
char c1 = 98;//如果给char类型的变量赋值数字时,打印该char类型的结果就是在ASCII编码中该数字对应的字符
System.out.println(c1);//b
char c11 = 'b';
System.out.println(c11);//b
System.out.println(c1+c11);//196//如果两个字符类型的变量参与运算编译器就会自动按照ASCII编码表中字符和int类型数字对应的关系,转成相应的数字来做运算
System.out.println(a1+b1+c1+c11);
System.out.println("---------------");
//有多种数据类型的变量参与运算其结果的类型是以其中最大的数据范围类型为准
byte a2 = 12;
int b2 = 22;
float c2 = 23.0F;
double d2 = 3.14;
System.out.println("结果为:"+(a2+b2+c2+d2));//double类型:60.14//多种数据类型参与运算,会自动转化为更大的数据类型
byte a22 = 21;
int b22 = a22;//较小的数据类型的变量可以直接赋值给数据类型较大的数据类型,无需强转
System.out.println(b22);//21
System.out.println("-----------------");
//强制类型转换(可能会改变数据大小)
int a3 = 22;//[-128,127]
byte b3 = (byte)a3;//数据类型较大的变量赋值给较小的数据类型的变量要强制转换/数据大小不变因为int类型的数据值恰好在byte类型所表示的范围内
System.out.println(b3);//22
double c3 = 3.14;
int d3 = (int)c3;//强制转换后数据大小可能会改变,double类型的数据转换为int类型的数据就是只保留了小数点前面的整数部分而舍弃小数部分
System.out.println(d3);//3
int e3 = 233;
double f3 = 33.33;
System.out.println(e3+f3);//266.33//运算结果的数据类型以参与运算的数据类型中的较大的数据类型为准
double g3 = 21;//21.0把一个int类型的数赋值给double类型的变量结果是一个double类型//可以把较小的数值赋值给较大的数据类型的变量,只要不超过该数据类型所表示的范围就行了
System.out.println(g3);
System.out.println("---------------");
//运算符:+ - * /(取商) %(取余或取余数)
//1).加号做运算符
int a4 = 3;
char b4 = 'a';//编译器根据ASCII编码表上把字符a转成其对应的int类型的数值然后再参与运算
System.out.println(a4+b4);
//2).加号做连接符【字符串连接】
String str4 = "hello";//String类型是引用数据类型
int c4 = 232;
System.out.println(str4+c4);//hello232
int d4 = 8;
//对一组变量进行操作时编译器会自动把字符串或字符串类型的变量的【后面的】数据类型默认成字符串类型再进行字符串连接操作
System.out.println(str4+c4+d4);//hello2328
System.out.println("helloWorld"+c4+d4);//helloWorld2338
System.out.println(c4+d4+str4);//240hello
System.out.println(c4+d4+"helloWorld");//240helloWorld
System.out.println(str4+(c4+d4));//hello240
System.out.println("---------------");
//++(自增)、--(自减)运算符
//1)单独使用(变量++,++变量区别不大都是变量加1,变量--和--变量都是变量减一)
int a5 = 3;
a5++;
System.out.println(a5);//4
a5--;
System.out.println(a5);//3
int b5 = 4;
++b5;
System.out.println(b5);//5
--b5;
System.out.println(b5);//4
int c5 = 5;
c5++;
++c5;
--c5;
c5--;
System.out.println(c5);//5
System.out.println("---------------");
//混合使用
int d5 = 5;
int e5 = d5++;//先赋值后自增(++在后就后自增)//--同理
System.out.println(e5);//5
System.out.println(d5);//6
e5 = ++d5;//先自增再赋值(++在前就先自增)//--同理
System.out.println(e5);//7
System.out.println(d5);//7
System.out.println("-----------------");
//赋值运算=(含有隐式强制转换)
int a6 = 10;//把等号=右边的数值赋值给等号左边的变量
short b6 = 5;
b6 +=10;//b6 = (short)(b6+10)
System.out.println(b6);//15
b6 -= 8.0;//b6 = (short)(b6-8)//在运算中结果先是double类型然后强转为short类型
System.out.println(b6);//7
b6 *=2.5;//b6 = (short)(b6*2)//运算工程中会转为double类型得到结果再强转为short类型
System.out.println(b6);//17
b6 /=3;//除法是整数类型的不会是浮点类型的结果
System.out.println(b6);//4
b6 %=3.0;//b6 = (short)(b6%3)//在运算中结果先是double类型然后强转为short类型
System.out.println(b6);//1
System.out.println("------------");
//比较运算符:> >= < <= == !=
//==判断两个数值类型的数据数据是否相等,在面向对象中是判断两个变量是否管理同一个对象
//=:是赋值运算符
//逻辑运算于短路逻辑运算
//&(与),|(或),!(非),&&(短路与),||(短路或)
System.out.println(3<4&4<5);//true//&两边的Boolean类型结果都是true才为true
System.out.println(3>4&4<5);//false
System.out.println(3<4&4>5);//false
System.out.println(3>4&4>5);//false
System.out.println("---------------");
System.out.println(3<4|4<5);//true
System.out.println(3<4|4>5);//true
System.out.println(3>4|4<5);//true
System.out.println(3>4|4>5);//false//|两边的Boolean类型的结果都是false才是false
System.out.println("---------------");
System.out.println(!(3>5));//true
System.out.println("短路运算");
int a7 = 10;
int b7 = 8;
System.out.println(a7