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. 华为云服务器安装hadoop2.7.5

    1. 安装环境 1.1硬件环境 1.1.1 NameNode 配置项 详细参数 主机 k8s-master CPU Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz ...

  2. google protocol buffer——protobuf的编码原理二

    这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们主要通 ...

  3. Python协程之asyncio

    asyncio 是 Python 中的异步IO库,用来编写并发协程,适用于IO阻塞且需要大量并发的场景,例如爬虫.文件读写. asyncio 在 Python3.4 被引入,经过几个版本的迭代,特性. ...

  4. android 使用svg 和 webp

    1.参考 https://chris.banes.dev/2016/02/25/appcompat-vector/#enabling-the-flag 2.使用svg 2.1 在中打开svg选项 an ...

  5. 【HttpRunner v3.x】笔记—6. 测试用例-teststeps-RunRequest

    之前我们了解了config里的各项参数,今天来了解另一个重要部分--teststeps,在这之前,先看看测试用例的分层模型. 一.测试用例分层模型 一个testcase里(就是一个pytest格式的P ...

  6. [BUUOJ记录] [ACTF2020 新生赛]BackupFile、Exec

    两道题都比较简单,所以放到一块记下来吧,不是水博客,师傅们轻点打 BackupFile 题目提示“Try to find out source file!”,访问备份文件/index.php.bak获 ...

  7. CSS中的包含块

    1.初始包含块,浏览器viewport大小 2.非根元素,position:relative/static,包含块为最近的块级框,表格单元或行内祖先框的内容区 3.非根元素,position:abso ...

  8. akka-streams - 从应用角度学习:basic stream parts

    实际上很早就写了一系列关于akka-streams的博客.但那个时候纯粹是为了了解akka而去学习的,主要是从了解akka-streams的原理为出发点.因为akka-streams是akka系列工具 ...

  9. Zabbix 5.0 LTS版本的安装小结

    Zabbix 5.0 LTS版本的安装小结   1:准备Zabbix的服务器. 这里可能需要一台或多台服务器,视需求和资源而定.也可以将Zabbix_Server.MySQL.Zabbix Web等安 ...

  10. kali linux 开启ssh服务

    kali linux 一般默认不开启ssh服务,可使用命令查看ssh服务是否开启 命令:service ssh status 如果显示ssh服务没有开启需要修改ssh配置文件将ssh服务开启,kali ...