Java编程基础(二)

Java编程基础(二)

一.数据类型转换

(1)自动类型转换

范围小的数据类型值,转换为范围大的数据类型的值。

例如 byte int 自动 byte 转换为 int

byte->short->int->long->float->double

package com.huawei;
public class VariableTest1 {
    public static void main(String[] args) {
        //自动类型转换
        int i=666;
        double d;
        /**
         * 这一块就是自动类型转换,因为并没有指定将i转换为double
         * 直接使用i
         */
        d=i;
        System.out.println("转换之前i="+i);
        System.out.println("转换之后的d="+d);
    }
}
结果:
转换之前i=666
转换之后的d=666.0

Process finished with exit code 0

(2)强制数据类型转换

数据范围大的转换为数据类型小的。强制类型转换不会报错,只是损失了精度。

例如:喝多了::: 记不住 精度 就丢失了, double 2.134 --> int 2 0.134 没了。

数据类型之间进行强制转换。比如:int 转换为 String 或者 String转换为 int

String与日期类型 转换。 “2018-11-6 20:37:66:002”–>Date 先记住 后面会在API

     //强制类型转换
        int i;
        double d=998.99;
        /**
         * 强制类型转换需要 ()--->括号里面放需要强制转换的类型
         * 例如double转int 小括号就是 (int)
         */
        i=(int)d;
        System.out.println("强制转换前d="+d);
        System.out.println("强制类型后i="+i);
        结果:
        强制转换前d=998.99
		强制类型后i=998

二.算术运算符

加减 乘除 求余运算 + - * / %

运算后赋值.赋值运算

+= 相当于+完之后赋值 例如int a=0 a+=10;相当于a=a+10;

-=

/=

关于/,一定记得0不能作为除数,否则会出现异常

关于string+或者+=都是表示拼接,并不是运算.

例如String s=“120”;

​ s+=111;

结果:s=120111

package com.huawei;
/**
 * 算术运算符
 * @author ql
 * @version 1.0
 */
public class Operator {
    public static void main(String[] args) {
        //定义变量
        int a=1;
        int b=2;
        int sum;
        int sub;
        int mul;
        double dvd;
        int mod;
        //算术运算符 基本运算
            //加法
        sum=a+b;
            //减法
        sub=b-a;
            //乘法
        mul=a*b;
            //除法
        dvd=a/b;//先计算a/b 这是整数的除法 1/2=0,然后再把结果赋值给了dvd 0.0
        dvd=a/(b*1.0);//先计算时,需要先把int转化为double 1.0/2.0 结果0.5
        System.out.println("加法,a+b="+sum);
        System.out.println("减法,b-a="+sub);
        System.out.println("乘法,a*b="+mul);
        System.out.println("除法,a/b="+dvd);
        System.out.println("除法,a/(b*1.0)="+dvd);
    }
}
结果:
加法,a+b=3
减法,b-a=1
乘法,a*b=2
除法,a/b=0.5
除法,a/(b*1.0)=0.5

三.自增自减运算符

++ – int a; 都代表1次

a++:表示自己增加1 ; 表示先使用变量 a ,再进行自加运算

++a:表示自己增加1;表示先自加运算,再使用变量a

a–:表示自己减少1 ; 表示先使用变量 a ,再进行自减运算

++a:表示自己减少1;表示先自减运算,再使用变量a

一般实在循环时候使用–后面会讲流程控制时会详细讲

package com.huawei;
/**
 * 自增自建运算符
 * (1) ++a先计算后使用
 * (2)a++先使用后计算
 * (3)++ 一次 代表 增加1
 * @author ql
 * @version 1.0
 */
public class VariableTest2 {
    public static void main(String[] args) {
        int a=1;
        int b=++a*(++a);
        int c=a++*(++a);
        System.out.println("此时的a="+a);
        System.out.println("此时的b="+b);
        System.out.println("此时的c="+c);
    }
}
结果:
此时的a=5
此时的b=6
此时的c=15

四.比较运算符

比较 > < <= >= == !=

进行数据的比较, 最后的结果为一个Boolean类型的结果.

条件语句.(if else case while)

package com.huawei;
import java.util.Scanner;
/**
 * 通过键盘获得身高,然后进行比较
 * 键盘获得输入,通过scanner类获得
 * @author ql
 * @version 1.0
 */
public class ComparisonHeigth {
    public static void main(String[] args) {
        //1.获得身高的输入
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入A的身高(cm为单位,整数): ");
        //获得A身高的整形输入
        int height_A=scan.nextInt(); //nextInt()是scanner类自带函数
        System.out.println("请输入B的身高(cm为单位,整数): ");
        //获得B身高的整形输入
        int height_B=scan.nextInt();

        //2.比较身高
        System.out.println("A的身高是否大于等于B的身高"+(height_A>=height_B));
    }
}
结果:
请输入A的身高(cm为单位,整数): 
170
请输入B的身高(cm为单位,整数): 
190
A的身高是否大于等于B的身高false

五.逻辑运算符

逻辑与

&: 表示只有表达式两边都是 true 结果才为 true

&&:表示只有表达式两边都是 true 结果才为 true

​ 区别:短路,提前结束这个判断过程。

​ && 如果第一个条件为 false 则 后面的语句不再运行。 可以加快速度。

​ &: 不具有短路功能,从左到右 依次执行。

package com.huawei;
/**
 *逻辑运算
 * @author ql
 * @version 1.0
 */
public class LogicalOperator {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        boolean flag=a>b && b++>=2;//短路
        System.out.println("flag="+flag+",b="+b);
    }
}
结果:
flag=false,b=2
package com.huawei;
/**
 *逻辑运算
 * @author ql
 * @version 1.0
 */
public class LogicalOperator {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        boolean flag=a>b & b++>=2;//不具备短路功能
        System.out.println("flag="+flag+",b="+b);
    }
}
结果:
flag=false,b=3

逻辑或

|| :有一个为true就为true

|:有一个为 true 就为 true

​ 区别: 短路,提前结束这个判断过程。

​ ||:如果第一个条件为 true 那么后面不再判断,直接输出为 true;

​ |:不具有短路功能,从左到右 依次执行

package com.huawei;
/**
 *逻辑运算
 * @author ql
 * @version 1.0
 */
public class LogicalOperator {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        boolean flag=a>b || b++>=5;
        System.out.println("flag="+flag+",b="+b);
    }
}
结果:
flag=false,b=3
package com.huawei;
/**
 *逻辑运算
 * @author ql
 * @version 1.0
 */
public class LogicalOperator {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        boolean flag=a>b | b++>=5;
        System.out.println("flag="+flag+",b="+b);
    }
}
结果:
flag=false,b=3

逻辑非

! 非真即假 非假即真。

六.位运算符

主要针对二进制数.只有0 1 两种形态

&: 位与 两个数同时为1 则为1

|: 位或 两个数中有一个为1 则为1 否则为0

^: 异或 相同为0 不同为1

右移运算符:>> 代表位数向右移动

左移运算符:>> 代表位数向左移动

无符号右移:>>>

package com.huawei;
/**
 * 位运算符 需要转为2进制 目前都是十进制数,运算的时候程序会自动转
 */
public class BitOperator {
    public static void main(String[] args) {
        int a=5;
        int b=1;
        //位与运算
        System.out.println("1&5="+(a&b));
        //位或运算
        System.out.println("1|5="+(a|b));
        //位异或运算
        System.out.println("1^5="+(a^b));
        a=21;
        //右移运算
        System.out.println("21>>1="+(a>>1));
        //左移运算
        System.out.println("21<<1="+(a<<1));

        a=-10;
        //无符号右移与右移运算的区别
        System.out.println("右移运算 -10>>1="+(a>>1));
        System.out.println("无符号右移运算 -10>>>1="+(a>>>1));
    }
}
结果:
1&5=1
1|5=5
1^5=4
21>>1=10
21<<1=42
右移运算 -10>>1=-5
无符号右移运算 -10>>>1=2147483643

七.三元运算符

布尔表达式?结果1:结果2
如果布尔表达式的结果为 true ,进行结果1
如果布尔表达式的结果为 false ,进行结果2

package com.huawei;
/**
 * @author ql
 * @version 1.0
 */
public class ThtOpertor {
    public static void main(String[] args) {
        int a=1;
        int c=a>2?0:1;
        System.out.println("c="+c);
    }
}
结果:
c=1

八.转义运算符

字符并不是你看起来的那样子,转义了.

a.八进制转义

​ +用1-3位8进制数字,范围’000’–‘377’

​ 例如: \0;

package com.huawei;

/**
 *八进制转义字符
 * @author ql
 * @version 1.0
 */
public class EscapeCharecter {
    public static void main(String[] args) {
        char c='\0';
        //大写字母A对应ascII 65转成8进制
        char c2='\101';
        System.out.println("c2="+c2+",c="+c);
    }
}
结果:
c2=A,c= 

b.unicode 转义字符

​ \u+ 4位十六进制数字:0-65535

package com.huawei;

/**
 * @author ql
 * @version 1.0
 */
public class EscapeCharecter {
    public static void main(String[] args) {
        /**
         * 16进制Unicode转义字符 范围更广
         * 对应的十进制33
         */
        char c3='\u0021';
        System.out.println("c3="+c3);

    }
}
结果:
c3=!

c、特殊字符

":表示双引号
':单引号
\:反斜线

*我爱“Young”老师,It’s nice.*\

package com.huawei;
/**
 * @author ql
 * @version 1.0
 */
public class EscapeCharecter {
    public static void main(String[] args) {
        /**
         * 特殊字符
         */
        String s=" \\*我爱\"Young\"老师,It’s nice.*\\";
        System.out.println("s="+s);
    }
}
结果:
s= \*我爱"Young"老师,It’s nice.*\

d、控制字符

\r :回车
\n: 换行
\t: tab
\b:退格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值