引用类 java 强制转换 java强制类型转换符_操作数

IDE工具-eclipse安装与使用

下载地址:http://www.eclipse.org/downloads/packages/release/Neon/3

引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_02

*启动eclipse的前提是要安装JDK,如果没有安装JDK,启动会报“找不到JDK”错双击打开之后会如下界面 会提示你选择工作空间 workspace

引用类 java 强制转换 java强制类型转换符_类型转换_03


进入 eclipse之后 可以再这里更改工作区

引用类 java 强制转换 java强制类型转换符_运算符_04

Eclipse 的基本设置

对整个工作区间设置编码格式:
选择“Window”菜单选项,选择“Preference”首选项-在搜索框中输入"encoding",选择workspace进行设置,设置为utf-8 国际通用编码。
调节控制条字体大小。
Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Basic -> Text Font -> Edit
保护色的设置

Eclipse 如何写代码

1. 新建工程项目

选择file -选择new(新建东西)–选择 java project --输入工程名 --选择应用 --此时项目就建立完成了

引用类 java 强制转换 java强制类型转换符_操作数_05


2. 在项目中找到 src目录 写代码

选择src(代码写在这个目录下)–选择new -选择package-输出包名用.分隔-选择应用

选择包–右键选择new - 选择class - 书写类名-选择应用–此时可以写代码了

3. Eclipse 运行java程序

小按钮 || 右键 run as --选择 java app… || F11 都可以快捷当前代码

常用快捷键
alt + shift +j 产生文档注释快捷键
ctrl+n 新建的快捷键
alt + / 自动提示
ctrl+d 删除一行
alt + 上下箭头 本行上移或下移
ctrl + alt + 上下箭头 复制本行到上移或下移

删除项目 右键项目 - 选择 delete (勾上就是彻底的物理删除:要慎重)

引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_06


导入源码

引用类 java 强制转换 java强制类型转换符_类型转换_07


引用类 java 强制转换 java强制类型转换符_类型转换_08


引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_09


引用类 java 强制转换 java强制类型转换符_类型转换_10

Eclipse debug 调试

1.在要调试代码处打断点,双击

引用类 java 强制转换 java强制类型转换符_类型转换_11


打完断点后

引用类 java 强制转换 java强制类型转换符_运算符_12


2.右键选择 debug as 执行代码

如果碰到方法,则按F5进入方法体,F5无法进去方法内部 : 解决方式

然后按F6移动到下一行,不进入方法体 ,如果想跳出方法体则按F7,如果想执行到下个断点后执行完成,按F8。在调试过程中可以 看变量的值

如果碰到方法,则按F5进入方法体,

引用类 java 强制转换 java强制类型转换符_操作数_13

调试快捷键

F5——进入:移动到下一个步骤,如果当前行有一个方法调用,该控件将会跳转到被调用方法的第一行执行。 进行下一步 一直是下一步 没有特殊功能

F6——跳出:移动到下一行。如果在当前行有方法调用,那么会直接移动到下一行执行。不会进入被调用方法体里面。 进行下一步,如果下一步是方法调用,那么一次性执行完这个方法

F7返回:从当前方法中跳出,继续往下执行。相当于当前方法执行完毕

F8:移动到下一个断点处执行。

查看打了几个debug断点

引用类 java 强制转换 java强制类型转换符_运算符_14

类型转换

在Java程序中,不同基本类型的值经常需要进行相互转换;类型转换分为自动类型转换和强制类型转换 ;类型转换和布尔型没关系 , 类型转换是数值型数据进行的转换 ;
(一)自动类型转换

当把一个表数范围小的数值或变量直接赋值给另一个表数范围大的变量时,系统可以进行自动类型转换,当进行不同类型混合计算时,自动转成最大范围类型进行计算,这如同小瓶水倒入大瓶水没有问题一样;

引用类 java 强制转换 java强制类型转换符_操作数_15


引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_16


(二)强制类型转换

强转格式 :

小类型变量 = (小类型)大类型数据 ; // 后期引用数据类型也适用该格式

例如 : int i = (int) 4.14;

引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_17


如同大瓶水倒入小瓶,两种结果:

1.大瓶水 ≤ 小瓶水,小瓶子能装下(强转没问题);

2.大瓶水 > 小瓶水,小瓶水溢出(强转会发生截断(按模取余)或可能溢出)

**强转数据,数据值没有丢失的前提:**类型大的数值小于类型小的数值的最大取值范围

引用类 java 强制转换 java强制类型转换符_类型转换_18


特别注意:在编程中要尽量避免由于强转导致的非预期结果

类型强制转换语法格式 :
变量 = (type)变量 小类型变量 = (小类型)大类型数据;

运算符

知识点:

算术运算符 ++ –
位运算符
赋值运算符 = == ===(恒等)
关系运算符
逻辑运算符 逻辑或 逻辑与 非
三目运算符
运算符优先级
第三变量

(一)算术运算符

引用类 java 强制转换 java强制类型转换符_运算符_19


+ - * / % 学习

算数运算符 ±*/% 可以进行数学上的 加减乘法取余操作 ;

**使用格式 a 算数运算符 b ;**使用了算法运算符, 该表达式就是算法表达式 , 会返回一个结果 ,除去自增自减,所有的算数表达式的结果必须接受 , 否则表达式无意义 , 编译不通过 ;算数运算符的结果的类型是 运算符两端的最大类型 ;

引用类 java 强制转换 java强制类型转换符_运算符_20


如果类型是 short / byte /char 进行运算 , 那么结果默认是 int 类型 ;

引用类 java 强制转换 java强制类型转换符_运算符_21


++ – 说明:

++ – 只能被变量使用

使用格式 : 变量++ || 变量-- || ++变量 || --变量

++,自增,单目运算符,把++在前,先把操作数+1,然后把操作数放入表达式中;(先自增,再赋值);把++在后,先把操作数放入表达式中,然后把操作数+1;(先赋值,再自增)b=a++

–,自减,单目运算符,把–放左边,先把操作数-1,然后把操作数放入表达式中;(先减1,后取值);把–放右边,先把操作数放入表达式中,然后把操作数-1;(先取值,后减1)

引用类 java 强制转换 java强制类型转换符_运算符_22


++ – 原理图 :

引用类 java 强制转换 java强制类型转换符_类型转换_23


(二)位运算符

位运算符只能操作整型数据,byte char short 进行位运算时先升级类型为int;

位运算符只针对二进制来进行操作,在jvm中,正数负数都用补码表示;

引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_24


引用类 java 强制转换 java强制类型转换符_类型转换_25


位非(~):一元操作符,操作数的第n位为1,那么结果的第n位为0,反之;例: ~5 结果是 -6

引用类 java 强制转换 java强制类型转换符_操作数_26


**位与(&):**第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0;例:5 & 3 结果是1;

引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_27


位或(|):第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0;例:5 | 3 结果是7;

引用类 java 强制转换 java强制类型转换符_运算符_28


位异或(^): 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n位也为1,否则为0;例:5 ^ 3 结果是6;

引用类 java 强制转换 java强制类型转换符_操作数_29


左移(<<) :右边空出位用0填补;例:5 << 2 结果是20; x << y 等同 x * 2^y

引用类 java 强制转换 java强制类型转换符_操作数_30


**右移(>>):**左边空出位用符号位填补;正数在前面补0 负数在前面补1例:5 >> 2 结果是1;

引用类 java 强制转换 java强制类型转换符_类型转换_31


-5 >> 2 结果是 -2

-5 补码

**无符号右移(>>>)?*左边空出位用0填补;不管正数负数都补0

例:-5 >>>3 结果是536870911;

引用类 java 强制转换 java强制类型转换符_运算符_32


(三)赋值运算符 =赋值运算符优先级是最低的 , i= 3+ 5; y = i = 3+ 5;赋值运算符有很多扩展的 , 如下图都是扩展的赋值运算符

a+=b ; 等同于 a = a + b;

a*=b ; 等同于 a = a*b ;

引用类 java 强制转换 java强制类型转换符_引用类 java 强制转换_33


扩展的赋值运算符 自带了一个隐藏起来的类型强制转换 ;

引用类 java 强制转换 java强制类型转换符_操作数_34


(四)关系运算符使用关系运算符进行运算 , 就是一个关系表达式 , 关系表达式都会返回一个 布尔结果 ; 该结果必须接收 ;关系运算符决定值和值之间的关系,返回布尔型值,结果不为真,就为假。

引用类 java 强制转换 java强制类型转换符_类型转换_35


(五)逻辑运算符逻辑运算符的运算数只能是布尔类型,且逻辑运算的结果也是布尔类型。

& | ^ 操作整型时是做位运算 , 操作布尔值时是做逻辑运算 ;

引用类 java 强制转换 java强制类型转换符_运算符_36


! 操作一个布尔值 , 真变假 , 假变真 ;

^ 亦或 操作两个布尔值 , 当且仅当一个为true 一个为false 时 , 表达式结果为 true , 反之false

& 与 操作两个布尔值 , 当且仅当两个值都为true时 , 表达式结果为true 反之false
| 或 操作两个布尔值 , 当两个中至少有一个值为true , 表达式结果为true ; 两个都为false时 表达式结果为 false;
&& 短路与 基本等价于 &
|| 短路或 基本等价于 |

引用类 java 强制转换 java强制类型转换符_操作数_37


注意:

短路:当参与运算的一个操作数已经足以推断出这个表达式的值的时候,另外一个操作数(有可能是表达式)就不会再执行。

&& 短路与 :只要当前项为假,就不再往后判断,直接认为整个表达式为假

|| 短路或:只要当前项为真,就不再往后判断,直接认为整个表达式为真、
短路和逻辑执行流程有所区别 , 但是最终结果都是一致的 ;
短路与  短路或的验证代码如下 :
public class Test_001 {
    public static void main(String[] args) {
        int a=5;
        int b=3;
        //逻辑与  &&    (并且)
        //两个结果 一个false 结果false      两个true 结果true
        boolean c= a==b&&a>b;
        
        //逻辑或  ||   (或者)
        //两个结果   一个true  结果 true    两个false  结果 false
        boolean c1= a>b||a!=b;
        System.out.println(c1);
        
        
    }
}

(六)三目(元)运算符: x ? y : z x.y.z 都是表达式 a>b?9:6

语法格式:

布尔值 ? 值1: 值2;  
会返回一个结果,结果是 值1 或 值2 , 值1 和 值2 的类型可以不同  ,可以是任意类型

运算规则:先确定布尔值是真还是假 , 是真整个表达式结束返回值1作为表达式的结果 , 反之结束表达式 以值2作为表达式的结果 ;使用三元运算符可以代替简单的if语句 ;

三元表达式的返回值结果:
值1 值2 可以是任意类型 , 两个值可以是不同类型 ;但是接收的时候会有问题 ;

public class Test_002 {
    public static void main(String[] args) {
        
        int a=10;
        double b=9.8;
        //三目运算符   表达式?true :false;
        //true  false  有变量接收的时候   这两个返回的类型必须一致
        double c=(a>b)?a:b;
        
        String str=(a==b)?"我是真的":"我也是真的";
        
        boolean b1=(a<=b)?3>5:7<9;
        
        //特殊情况  直接输出    true  false 类型可以不一致
        System.out.println((a<=b)?19.2:"我是小泽" );
    }
}

七)运算符优先级

引用类 java 强制转换 java强制类型转换符_操作数_38