Java学习day03
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的更多相关文章
- Java 学习 day03
01-语句(while) 02-语句(do while) 03-语句(for) 04-语句(for和while的区别) 05-语句(循环语句的其他特点) 06-语句(for语句练习-累加&计数 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- Java学习心得之 HttpClient的GET和POST请求
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
随机推荐
- 华为云服务器安装hadoop2.7.5
1. 安装环境 1.1硬件环境 1.1.1 NameNode 配置项 详细参数 主机 k8s-master CPU Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz ...
- google protocol buffer——protobuf的编码原理二
这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们主要通 ...
- Python协程之asyncio
asyncio 是 Python 中的异步IO库,用来编写并发协程,适用于IO阻塞且需要大量并发的场景,例如爬虫.文件读写. asyncio 在 Python3.4 被引入,经过几个版本的迭代,特性. ...
- android 使用svg 和 webp
1.参考 https://chris.banes.dev/2016/02/25/appcompat-vector/#enabling-the-flag 2.使用svg 2.1 在中打开svg选项 an ...
- 【HttpRunner v3.x】笔记—6. 测试用例-teststeps-RunRequest
之前我们了解了config里的各项参数,今天来了解另一个重要部分--teststeps,在这之前,先看看测试用例的分层模型. 一.测试用例分层模型 一个testcase里(就是一个pytest格式的P ...
- [BUUOJ记录] [ACTF2020 新生赛]BackupFile、Exec
两道题都比较简单,所以放到一块记下来吧,不是水博客,师傅们轻点打 BackupFile 题目提示“Try to find out source file!”,访问备份文件/index.php.bak获 ...
- CSS中的包含块
1.初始包含块,浏览器viewport大小 2.非根元素,position:relative/static,包含块为最近的块级框,表格单元或行内祖先框的内容区 3.非根元素,position:abso ...
- akka-streams - 从应用角度学习:basic stream parts
实际上很早就写了一系列关于akka-streams的博客.但那个时候纯粹是为了了解akka而去学习的,主要是从了解akka-streams的原理为出发点.因为akka-streams是akka系列工具 ...
- Zabbix 5.0 LTS版本的安装小结
Zabbix 5.0 LTS版本的安装小结 1:准备Zabbix的服务器. 这里可能需要一台或多台服务器,视需求和资源而定.也可以将Zabbix_Server.MySQL.Zabbix Web等安 ...
- kali linux 开启ssh服务
kali linux 一般默认不开启ssh服务,可使用命令查看ssh服务是否开启 命令:service ssh status 如果显示ssh服务没有开启需要修改ssh配置文件将ssh服务开启,kali ...