day 02 (数据类型转换、运算符、方法入门)

数据类型转换

分为自动类型转换和强制类型转换

自动转换:将取值范围小的类型自动提升为取值范围大的类型

public static void main(String[] args){
    int i = 1;
    byte j = 2; 
    //byte x = i + j ;//报错
    //intl类型和byte类型运算,结果是int类型
    int y = i + j ;
        System.out.println(y);
}

同样道理,当一个int变量和一个double变量运算时,int类型将自动提升成double类型进行运算

转换规则

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

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

转换格式:数据类型   变量名  =  (数据类型)  被装数据值

public static void main(String[] args){
    //doube 类型数据强制转换成int类型,直接去掉小数点。
    int i = (int) 1.5;
        System.out.println(i);
}

同样的道理,当一个short 类型与1相加,我们可以很清楚的知道数据类型提升了,但是还是想把结果赋值给short变量。这就需要强制转换。

public static void main(String[] args){
    //short类型变量,内存中2个字节
    short a = 1;
    /*
        出现编译失败
        a 和1 做运算时,1是int类型,a会被提升成int类型
        a + 1 后的结果是int类型,将结果赋值给short类型时发生错误
        short内存2个字节,int类型4个字节
        必须将int强制转换成short才能完成赋值

   */
    s = s + 1;// 编译失败
    s = (short)(s + 1);// 编译成功
}

强烈注意

  • 浮点转成整数,直接取消小数点,可能造成数据精度损失
  • int强制转换成short  砍掉两个字节,可能造成数据丢失
//定义S为short范围内最大值
short s = 32767;
//运算后,强制转换,砍掉两个字节后会出现不确定的结果
s = (short)( s + 10);

ASCII编码表

编码表:就是将人类的文字与一个十进制数进行对应起来组成的一张表格。

字符 数值
0 48
9 57
A 65
Z 90
a 97
z 122

运算符

一般有算数运算符、赋值运算符、比较运算符、逻辑运算符、三元运算符

算术运算符

算术运算符包括  
+ 加法运算,字符串连接运算
- 减法运算符
* 乘法运算符
/ 除法运算符
% 取模运算,两个数字相除取余数
++ 、 -- 自增自减运算
  • ++运算,变量自己增长1,反之,--运算,变量自己减少1,用法与++一致

独立运算:

  • 前++和后++,前--和后--,没有什么区别
  • 变量前++;例如: ++i
  • 变量后++;例如: i++

混合运算 :

  • 和其他变量放在一起,前++和后++就产生了不同
  • 变量前++:变量a自己先加1,将加1后的结果赋值给b
  • 变量后++:变量a把自己的值先加1,然后赋值给b
  • +符号在字符串中的操作: +符号在遇到字符串的时候,表示连接、拼接的含义。例如,"a"+"b"的结果为"ab"

赋值运算符

赋值运算符包括  
== 等于号
+=(带有强制转换) 加等于
-= 减等于
*= 乘等于
/= 除等于
%= 取模等

就是将符号右边的值赋给左边的值

比较运算符

比较运算符包括  
== 比较符号两边数据是否相等,相等结果为true
> 比较符号左边的数据是否大于右边的数据,如果大于结果为true
< 比较符号左边的数据是否小于右边的数据,如果小于结果为true
<= 比较符号左边的数据是否小于或等于右边的数据,如果满足结果为true
>= 比较符号左边的数据是否大于或等于右边的数据,如果满足结果为true
!== 不等于符号,如果符号两边的数据不相等,结果为true

是两个数据之间进行比较的运算,运算结果都是布尔值 truefalse

逻辑运算符

逻辑运算符包括  
&& 与(短路)

两边都输true,结果为true

一边是false,结果为false

短路特点:符号左边为false,右边不再计算

| |   或(短路)

两边都输false,结果为false

一边是true,结果为true

短路特点:符号左边为true,右边不再计算

!  取反

!true结果是false

!false结果是true

是用来连接两个布尔类型结果的运算符,运算结果都是布尔值truefalse

三元运算符

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

方法入门

方法: 就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用,这样既实现了代码的复用性,也解决了代码冗余的现象

定义格式:

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

}

定义格式说明:

  • 修饰符 : 当前固定写法为public  static
  • 返回值类型 :要对应所要输出的数据的类型
  • 方法名:自己定义的名字,满足标识符规范,用来调节方法
  • 参数列表:传递给调用函数的变量的声明
  • return : 方法结束,若返回值类型为void,则方法大括号里的return可以不写

方法的调用

方法在定义完毕后,方法不会自己运行,必须被调用才能执行。我们可以在主方法main中来调用我们自己定义的方法,在主方法中,直接写要调用的方法名字即可

public static void main(){
    //调用定义的方法method
    method();
}
// 定义方法,被main调用
public static void method (){
    System.out.println("自己定义的方法,需要被main调用运行");
}

调用练习

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

public static void main(String[] args){
        //调用定义的方法operator
        operator();
}
// 定义方法,方法中定义三元运算符
public static void operator(){

        int i =0;
        i = (i == 2 ? 100 :200);
          System.out.println();
        int j = 0;
        j = (3 <= 4 ? 500 : 600);
        System.out.println();
}

注意事项

方法定义注意事项:

  • 方法必须定义在——类中方法体外
  • 方法不能定义在另一个方法的里面
public class Demo{
    public static void main (String[] args){
    }
    //正确方法,类中,main方法外面可以定义方法
    public static void method(){}

}
=====================================================
public class Demo{
    public static void main (String[] args){
        //错误写法,一个方法不能定义在另一个方法内部
        public static void method (){}
}
}

猜你喜欢

转载自blog.csdn.net/liu19951104/article/details/81144681
今日推荐