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{ ...
随机推荐
- 如何通过seo技术提高网站对用户的友好度
http://www.wocaoseo.com/thread-129-1-1.html 今天的天气又是29度,眼看着满大街的人都穿着短袖和衬衣了,自己也再不能穿个厚厚的外套出去了,要不会被别人笑 ...
- MD5加密,java String 转变成MD5 String 详细代码,工具类Android开发必备
/** * MD5加码.32位 * @param inStr * @return */ public static String MD5(String inStr) { MessageDigest m ...
- SSD-Tensorflow 512x512 训练配置
搞了几天终于把这个给搞得差不多了,遇到的错误这里也记录一下: 一.配置[配置什么的300和512其实差不多,这里只举一个例子来分析一下] 之前的文件修改什么的和300x300的一样:https://w ...
- ParticleSystem 介绍
ParticleSystem 介绍 http://gad.qq.com/article/detail/31724
- 【图像增强】CLAHE 限制对比度自适应直方图均衡化
文章目录: 目录 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 Histogram Equaliza ...
- ACboy needs your help (动态规划背包)
ACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he ...
- 为什么 char 数组比 String 更适合存储密码?
推荐阅读:5 个刁钻的 String 面试题! 另一个基于 String 的棘手 Java 问题,相信我只有很少的 Java 程序员可以正确回答这个问题. 这是一个真正艰难的核心 Java 面试问题, ...
- Java程序取MySQL的datetime字段,如何消除时间尾后讨厌的".0"
Problem: 直接取datetime字段的内容会有".0"后缀,如2020-05-03 18:21:39.0,虽无伤大雅但总觉得有些别扭. Solution:使用转化函数Dat ...
- ES6语法笔记
迭代器 // log let arr = ['一', '二', '三'] let iter = arr[Symbol.iterator]() console.log(iter.next()) cons ...
- Playbook使用,编写YAML
YAML是什么? YAML是一个可读性高.用来表达数据序列的格式语言 YAML:YAML Ain't a Markup Language YAML以数据为中心,重点描述数据的关系和结构 YAML的格式 ...