博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础
阅读量:7239 次
发布时间:2019-06-29

本文共 5019 字,大约阅读时间需要 16 分钟。

1、+=符号的扩展

public static void main(String[] args){short s = 1;s+=1;System.out.println(s);}

分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围

大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点,
也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.

2、常量和变量的运算

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 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没

有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。
反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什
么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

3、循环语句的区别

for 和 while 的小区别:

控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继
续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消
失,能够提高内存的使用效率。
在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

4、笔记一

1、字符常量用单引号,中间有且只有一个字符,不可以多个,也不可以没有;2、字符串常量用双引号,可以为空;3、不能直打印 null;4、java有六种常量;5、java的数据类型:    (1)基本数据类型;(4类8种)        1、整数型 byte  short  int  long(数据表示范围不一定和内存相关,例如长整形和单精度浮点数)        2、浮点型 float  double        3、字符型 char        4、布尔型 boolean    (2)引用数据类型;        1、字符串        2、类        3、接口等     (3)byte 一个字节 -128~127         short 两个字节         int  四个字节         long 八个字节         float 四个字节         double 八个字节         char 两个字节         boolean 在Java中没有明确指定它的大小注意事项:    1、字符串不是基本数据类型,而是引用类型;    2、浮点型可能只是一个近似值,不是精确的值;    3、数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节;    4、浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。   如果是整数,默认类型是int类型,如果要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。6、当数据类型不一样时,会发生数据类型转换    1、自动类型转换(隐式)        1、代码不需要进行特殊处理,自动完成;        2、规则:数据范围从小到大    2、强制类型转换(显示)        1、特点:代码需要进行特殊的数据格式处理,不能自动完成;        2、格式:范围小的类型  范围小的变量(名) = (范围小的类型) 原本范围大的数据类型注意事项:    1、byte/short/char 这三种类型都可以进行数学运算,例如“+”;    2、byte/short/char 这三种类型在进行数学运算时,都会先被提升为 int 类型,然后在进行计算;    3、boolean 类型不能发生数据类型转换;    4、'0' --- 48   'A' --- 65   'a' --- '97'7、四则运算符注意事项:    1、一旦进行运算的数据类型不一样,那么结果将会是数据类型范围大的那种;    2、“+” 常见的三种用法:        1、对于数值来说,那就是加法;        2、对于字符串char来说,在计算之前,char会被提升为int,然后在进行计算,char 类型和int 类型的对照关系表:ASCII、Unicode;        3、对于字符串String(首字母大写,但不是关键字)来说,加号代表连接操作; 任何数据类型和字符串进行连接的时候,结果都会变成字符串;8、自增运算符使用方式:    1、单独使用,不和其他操作混合,自己独立成为一个步骤;    2、混合使用;使用区别:    1、在单独使用的时候,前++和后++没有区别;    2、在混合使用的时候,有【重大区别】        A、如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用;        B、如果是【后++】,那么变量首先使用本来的数值,然后再让【变量+1】9、与“&&”、或“||”具有短路效果:如果根据左边可以判断得到最终结果,那么右边代码将不再执行,从而节省一定的性能;注意事项:    1、逻辑运算符只能用于boolean值;    2、与或需要左右各自有一个boolean值,但是取反只要有唯一的一个boolean值即可;10、三元运算符格式:数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;注意事项:    1、必须保证表达式A和表达式B都符合左侧数据类型的要求;    2、三元运算符的结果必须被使用;11、方法定义一个方法的格式public static void 方法名称() {    方法体}12、编译器的两个优化    /*    对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,    那么javac编译器将会自动隐含地为我们补上一个(byte)(short)(char)。    1. 如果没有超过左侧的范围,编译器补上强转。    2. 如果右侧超过了左侧范围,那么直接编译器报错。    */    public class Demo12Notice {        public static void main(String[] args) {            // 右侧确实是一个int数字,但是没有超过左侧的范围,就是正确的。            // int --> byte,不是自动类型转换            byte num1 = /*(byte)*/ 30; // 右侧没有超过左侧的范围            System.out.println(num1); // 30            // byte num2 = 128; // 右侧超过了左侧的范围            // int --> char,没有超过范围            // 编译器将会自动补上一个隐含的(char)            char zifu = /*(char)*/ 65;            System.out.println(zifu); // A        }    }    /*    在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,    那么编译器javac将会直接将若干个常量表达式计算得到结果。    short result = 5 + 8; // 等号右边全都是常量,没有任何变量参与运算    编译之后,得到的.class字节码文件当中相当于【直接就是】:    short result = 13;    右侧的常量结果数值,没有超过左侧范围,所以正确。    这称为“编译器的常量优化”。    但是注意:一旦表达式当中有变量参与,那么就不能进行这种优化了。    */    public class Demo13Notice {        public static void main(String[] args) {            short num1 = 10; // 正确写法,右侧没有超过左侧的范围,            short a = 5;            short b = 8;            // short + short --> int + int --> int            // short result = a + b; // 错误写法!左侧需要是int类型            // 右侧不用变量,而是采用常量,而且只有两个常量,没有别人            short result = 5 + 8;            System.out.println(result);        }13、switch    /*    switch语句使用的注意事项:    1. 多个case后面的数值不可以重复。    2. switch后面小括号当中只能是下列数据类型:    基本数据类型:byte/short/char/int    引用数据类型:String字符串、enum枚举    3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。    “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”    */    public class Demo08SwitchNotice {        public static void main(String[] args) {            int num = 2;            switch (num) {                case 1:                    System.out.println("你好");                    break;                case 2:                    System.out.println("我好");                    // break;                case 3:                    System.out.println("大家好");                    break;                default:                    System.out.println("他好,我也好。");                    break;            } // switch        }    }14、三种循环的区别/*三种循环的区别。1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。*/15、continue/*另一种循环控制语句是continue关键字。一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。*/

 

转载于:https://www.cnblogs.com/linyuhong/p/10511778.html

你可能感兴趣的文章
iptables外网一端口通过NAT转发内网一服务器端口上
查看>>
新书推荐
查看>>
程序与生活:生活要持续更新
查看>>
网络安全系列之四十九 IIS6.0权限设置
查看>>
VSphere client 虚拟机克隆及网卡报错处理
查看>>
【第一期】如何打造属于自己的网站编辑器——CKEditor与UEditor之争
查看>>
linux下卷组管理
查看>>
17个Linux系统高频率常用命令行和shell小脚本
查看>>
VisualSvn Server介绍
查看>>
Nginx性能测试工具之http_load
查看>>
为httpd服务器上单一的网站做客户机地址限制和用户授权限制知识补充
查看>>
Windows Server 2008终端服务详解系列4:TS网关的部署
查看>>
路由器通过NVI解决内网访问内部服务器的外部映射地址测试
查看>>
系统架构师-基础到企业应用架构-分层[上篇]
查看>>
【斗医】【2】Web应用开发20天
查看>>
Exchange 2010迁移Exchange 2013(一)共存部署
查看>>
精益求精——《我与学院的点点滴滴》征文作品
查看>>
nodejs npm常用命令
查看>>
使用CSS更改图标的颜色
查看>>
堪比锦衣卫的服务追踪【我身边的戴尔企业级解决方案】
查看>>