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. 新手学习seo写原创文章的方法

    http://www.wocaoseo.com/thread-102-1-1.html 前两天都是写自己公司克拉玛依电信公司年终活动和总结的事,今天继续学习seo技术,其实说难也难说容易也容易,关键的 ...

  2. vue-cli根据不同的命令自动切换不同环境地址

    前言 我们再使用vue脚手架开发项目时,不可避免的涉及到多个环境来回切换接口调用地址的问题,在开发环境中可能会通过 ip 来访问后台接口,但是当项目上线后就要把对用的接口地址换成生产环境的地址,肯定不 ...

  3. AndroidStudio与eclipse打包的时候报错。Error:(4) Error: "ssdk_instapager_login_html" is not translated in "en"

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  4. 安装Android Studio之后无法直接打开SDK Manager

    之前安装的android studio之后,SDK Manager和AVD Manager两个运行程序双击都打不开页面了,之前都是正常的,所以java环境变量的问题是不存在的. SDK Manager ...

  5. 跟着兄弟连系统学习Linux-【day01】

    day01-20200527 p1.unix发展历史         (1960,有一个实验室,三个团队组成,开发了Unix雏形,但是因为没有办法发版,所以就荒废了.这个小组里面有一个人,打游戏的时候 ...

  6. 跟着尚硅谷系统学习Docker-【day03】

    day03-20200715   p15.docker容器命令(下)   以守护进程的形式启动 [docker run -d 容器名]后台运行 启动了后又关闭了,与前台没有交互,立刻就kill了.前台 ...

  7. mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表

    之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...

  8. pycharm可以运行但无法debug的解决方法

    错误信息:pydev debugger: process 4588 is connecting 如果您尝试了网上的很多方法如防火墙设置,去掉 ".idea"文件,甚至重装pycha ...

  9. 用于测试XmlAnalyzer 1.00版的八个测试用例

    XmlAnalyzer 工程目的:将XML的属性和子节点按字母序排列,然后整形输出: 08. 原文=<project xmlns="http://maven.apache.org/PO ...

  10. 极简显示sessionid的jsp程序 war下载

    下载地址:https://files.cnblogs.com/files/xiandedanteng/simpleJspSessionId20200103.zip 解压后得到myweb.war就是可以 ...