day03 课堂笔记

1、数据类型

2、总结第二章到目前为止所学内容:
* 标识符
* 关键字
* 字面值
* 变量

成员变量如果没有赋值,系统会自动赋值,而局部变量不手动赋值,则会编译不通过。

* 数据类型

字符编码:在计算机中起到数据转换作用

‘a’----->97

'A'----->65

'0'----->45

记住以上三个

【简体中文编码方式】

GB2312 < GBK < GB18030包含字符最多

Java语言采用最多的编码方式为Unicode

所以标识符可以用中文表示

【八种基本数据类型的取值范围】

类型        取值范围      默认值

byte        [-128,127]      0

short       [-35768,32767]     0

int                     0

long                    0

float                  0.0

double                 0.0

boolean        [true,false]     false(true是1,false是0)

char        [0,65535]      \u0000

short和char能表示的种类数目是相同的,只不过char可以表示更大的正整数。

八种数据类型的默认值都是向0看齐

char类型占2个字节,而一个中文字符也占2个字节,故可以有 char c='字';

【转义字符】

\n  换行符

\t  制表符Tab

\\  普通的斜杠

\'  普通的单引号

\"  普通的双引号

转义字符出现在特殊字符之前,会将特殊字符转换为普通字符。

System.out.println()表示输出后换行,【注意不是换行后输出】

System.out.print()表示输出后不换行

public class A{

  public void main(String[] args){

  char c='\\';  //输出 \ 字符

  System.out.println("c");

  

  char c='\'';  //输出 ' 字符

  System.out.println("c");

}

}

JDK中自带的native2aascii.exe命令,可以将文字转换成Unicode编码形式

使用方法:

直接在DOS窗口输入native2ascii回车运行,输入汉字回车转换出Unicode码

例如,真不错---->\u771f   \u4e0d  \u9519

故,char型的变量默认值为\u0000,注意\u

【整数型字面值默认是int型的十进制数】

若以0开头,则是八进制

若以0x开头,则是十六进制

注意

long a=123;  ///仍然是将占4个字节的int型123转换为占8字节的long型123

long a=123456789 ;  //123456789超出int型的范围,编译出错,【面试题问你能不能编译通过】

long a=123456789L ;  //加个大写L,表示为long型数值,编译成功

【强制类型转换】

long a=100;

int b=a;  //大容量转小容量,编译不通过

//下面进行强制类型转换,编译通过,但可能损失精度

//尤其正负,在砍掉左边四个字节后,余下的“最高位”可能为1,存在正数变负数的可能

int b=(int)a;

【特例】下面这个可以编译通过

byte a=123; //表面上是大容量赋给小容量,但可以编译通过

//java规定对byte型变量赋值,赋值的int型量没超过byte的取值范围,则可以编译通过,

这对于char,short型的变量同样适用。

【JavaSE的类库的源码所在位置】

SE类库字节码:D:\software\Java\src.zip

SE类库源码:D:\software\Java\jre\lib\rt.jar

{string[] args}中的String使用的就是String.class字节码文件、

【浮点型字面值默认为double型】

double a=3.0;

如果想把浮点型字面值当做float型,则需在后面加F/f;

float a=5.1;  //编译出错

解决方法一:强制类型转换

float a=(float)5.1;

解决方法二:没有强制转换

float a=5.1f;

double和float型在计算机中存储的都是近似值

因为有些无限不循环数无限长,但存储空间有限

【布尔数据类型】

只有true和false两种类型,占一个字节

经常使用在逻辑判断和条件控制语句中

boolean a=1;  //编译错误

boolean a=true;  //编译成功,布尔型变量只能被赋值true或false,而不能是0,1

【基本数据类型之间的相互转换】【面试】

1、除布尔类型外均可互相转换

2、小容量向大容量转换,称为自动类型转换,容量从小到大排序:

byte < short < int < long < float < double < char

任何浮点型数据不管多少字节,都比整数型容量大

char和short可表示的种类数量相同,但是char可以取更大的正整数

3、大容量转化为小容量需要进行强制类型转换

4、当字面值没有超出byte、short、char的取值范围,可以直接赋值

5、short、byte、char混合运算时,会自动转化为int型

6、多种数据类型混合运算是,先转换成容量最大的那种类型再做运算

3、运算符

【算术运算符】

+

-

*

/

%(求余数,取模)

++(自增一)

--(自减一)

运算符有优先级,可以通过加括号,来提高,不需专门记忆

【关系运算符】

>

<

>=

<=

==

!=

上述关系运算符的运算结果一定是布尔类型true/false

【注意“=”是赋值运算符】

【逻辑运算符】

逻辑运算符要求两边的算子都是布尔类型

&       逻辑与

|      逻辑或

!      逻辑非(单目运算符)

^      逻辑异或

&&     短路与(与上面的逻辑与运算结果相同,但短路与存在短路现象)

||      短路或(与上面的逻辑或运算结果相同,但短路或存在短路现象)

【短路现象】当执行逻辑运算(5<2 & 5>2)时,先运算左边结果是false,在运算右边结果是true,整体结果为false

而(5<2 && 5>2)当左边运算结果为false时,整个运算结果已确定为false,右边不再计算,(较聪明)执行效率高

故短路与更常用,但特殊情况会使用逻辑与,比如,业务要求必须执行的时候

【总结】短路或 || :当左边结果为true时,右边不再计算

    短路与&&:当左边结果为false时,右边不再计算

* 赋值类运算符
* 字符串连接运算符
* 三元运算符

-----部分摘自B站动力节点教育集团

Java学习day03的更多相关文章

  1. Java 学习 day03

    01-语句(while) 02-语句(do while) 03-语句(for) 04-语句(for和while的区别) 05-语句(循环语句的其他特点) 06-语句(for语句练习-累加&计数 ...

  2. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  3. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  4. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

  5. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  6. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...

  7. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  8. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  9. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

随机推荐

  1. Framework项目持续集成(jenkins)及集合SonarQube

    目录 Framework项目持续集成及集合SonarQube - 前言 CI/CD是什么 -- jenkins 什么是sonarqube?什么是CodeReview? 什么是sonarqube? 什么 ...

  2. Laravel Pipeline原理及使用

    Laravel Pipeline原理及使用 开发中可能遇到非常冗长的逻辑,以至于我们想将针对性逻辑拆分出来,但是又拿不准该如何拆分才能实现较高的扩展性并保证较高的维护性,或者说不知道如何优雅的将待处理 ...

  3. Java开发之javaEE(java2EE)的介绍,java软件工程师初步阶段知识

    1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程序 ...

  4. android开发之动画的详解 整理资料 Android开发程序小冰整理

    /** * 作者:David Zheng on 2015/11/7 15:38 * *  网站:http://www.93sec.cc * *  微博:http://weibo.com/mcxiaob ...

  5. 关于babel你需要知道的事情

    babel js转码器 ES6 ==> ES5 配置 .babelrc

  6. 最通俗易懂的 Redis 架构模式详解

    前言 话说有一名意大利程序员,在 2004 年到 2006 年间主要做嵌入式工作,之后接触了 Web,2007 年和朋友共同创建了一个网站,并为了解决这个网站的负载问题(为了避免 MySQL 的低性能 ...

  7. 喵的Unity游戏开发之路 - 互动环境(有影响的运动)

    如图片.视频或代码格式等显示异常,请查看原文: https://mp.weixin.qq.com/s/Sv0FOxZCAHHUQPjT8rUeNw 很多童鞋没有系统的Unity3D游戏开发基础,也不知 ...

  8. Mybatis入门篇之结果映射,你射准了吗?

    目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...

  9. 【Webpack】NodeJS + Webpack

    目的:想要通过npm命令按照我们的规则生成静态资源(webpack4以后还能做到很多性能优化的配置,我所知道的只有css.js分包,以达到资源快速加载快速呈现的效果). 一.安装webpack npm ...

  10. 20190925-02配置redis服务在后台启动 000 023

    多端口要加 -p 可以进入指定端口