Java学习笔记(未完)

0 编程入门

0.1 概述

计算机包括硬件(hardware)和软件(software)两部分。硬件包括计算机中可以看得见的物理部分。而软件提供看不见的指令。这些指令控制硬件并且使得硬件完成特定的任务

程序设计
定义:创建(或开发)软件。软件包含了指令,告诉计算机做什么
应用场景:软件遍布我们周围。除了个人计算机,飞机、汽车、手机甚至烤面包机中,同样运行着软件

程序设计语言
软件开发人员在称为程序设计语言的强大工具的帮助下创建软件

如何选择该学习哪种程序设计语言?
(1)程序设计语言有很多种,每种语言都是为了实现某个特定的目的而发明的
(2)你会困惑哪种语言是最好的。事实上,没有“最好”的语言。每种语言都有它的长处和短处
(3)经验丰富的程序员知道各种语言擅长的应用场景,因此,会尽可能的掌握各种不同的程序设计语言
(4)如果你掌握了一种编程语言,应该会更容易上手其它的编程语言。关键是学习如何使用程序设计方法来解决问题

0.2 计算机硬件介绍

在这里插入图片描述
在这里插入图片描述
冯·诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯·诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯·诺依曼也因此被人们称为“计算机之父”

中央处理器(Central Processing Unit,CPU)是计算机的大脑。它从内存中获取指令,然后执行这些指令。其中包括:控制单元(control unit)和算术/逻辑单元(arithmetic/login unit)

控制单元:用于控制和协调其他组件的动作
算术/逻辑单元:用于完成数值运算(+、-、*、/)和逻辑运算(比较)

每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。时钟速度越快,在给定的时间段内执行的指令就越多。速度的计量单位是赫兹(Hz),1Hz相当于每秒1个脉冲。随着CPU速度不断提高,目前以千兆赫(GHz)来表述

最初一个CPU只有一个核(core)。核是处理器中实现指令读取和执行的部分。一个多核CPU是一个具有两个或者更多独立核的组件。可提高CPU的处理能力

IT定律之计算机行业发展规律
(1)摩尔定律(Moore’s Law)
(2)安迪-比尔定律(Andy and Bill’s Law)
(3)反摩尔定律(Reverse Moore’s Law)

内存中的信息在断电时会丢失。那我们可以考虑将程序和数据永久的保存在存储设备上。当计算机确实需要这些数据时,再移入内存,因为从内存中读取比从存储设备读取要快得多

存储设备主要有以下三种:
(1)磁盘驱动器:每台计算机至少有一个硬盘驱动器,硬盘(hard disk)用于永久的保存数据和程序
(2)光盘驱动器(CD和DVD):CD的容量可达700MB,DVD的容量可达4.7GB
(3) USB闪存驱动器:USB(Universal Serial Bus)通用串行总线。可以使用USB将打印机、数码相机、鼠标、外部硬盘驱动器连接到计算机上。USB闪存驱动器很小,可用于存储和传输数据的设备

比特(bit)和字节(byte)
计算机就是一系列的电路开关。每个开关存在两种状态:(off)和(on)。如果电路是开的,它的值是1。如果电路是关的,它的值是0

一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位

计算机中最基本的存储单元是字节(byte) 。每个字节由8个比特构成

计算机的存储能力是以字节和多字节来衡量的。如下:
1千字节(kilobyte,KB) = 1024B
1兆字节(megabyte,MB) = 1024KB
1千兆字节(gigabyte,GB) = 1024MB
1万亿字节(terabyte,TB) = 1024GB

内存(也叫 Random-Access Memory,RAM):由一个有序的字节序列组成,用于存储程序及程序需要的数据

一个程序和它的数据在被CPU执行前必须移到计算机的内存

每个字节都有一个唯一的地址。使用这个地址确定字节的位置,以便于存储和获取数据
在这里插入图片描述
一个计算机具有的RAM越多,它的运行速度越快,但是此规律是有限制的

内存与CPU一样,也构建在表面嵌有数百万晶体管的硅半导体芯片上。但内存芯片更简单、更低速、更便宜

实测发现:内存存取数据的速度比硬盘的存取速度快10倍,在某些环境里,硬盘和内存之间的速度差距可能会更大。而CPU的速度比内存不知还要快多少倍。当我们把程序从硬盘放到内存以后,CPU就直接在内存运行程序,这样比CPU直接在硬盘运行程序就要快很多

内存解决了一部分CPU运行过快,而硬盘数据存取太慢的问题。 提高了我们的电脑的运行速度。内存就如同一条“高速车道”一般,数据由传输速度较慢的硬盘通过这条高速车道传送至CPU进行处理

内存是带电存储的(一旦断电数据就会消失),而且容量有限,所以要长时间储存程序或数据就需要使用硬盘

内存在这里起了两个作用
1、 保存从硬盘读取的数据,提供给CPU使用
2.、保存CPU的一些临时执行结果,以便CPU下次使用或保存到硬盘

常见的输入设备:键盘(keyboard)和鼠标(mouse)
常见的输出设备:显示器(monitor)和打印机(printer)

显示器屏幕分辨率:是指显示设备水平和垂直方向上显示的像素(px)数
(1)分辨率可以手工设置
(2)分辨率越高,图像越锐化、越清晰

像素密度= √ [ ( 长 度 像 素 数 ) 2 + ( 宽 度 像 素 数 ) 2 ] / 屏 幕 尺 寸 √[(长度像素数)^2+(宽度像素数)^2]/屏幕尺寸 [()2+()2]/

计算机可以通过通信设备进行联网

常见的设备有:
1、拨号调制解调器:使用的是电话线,传输速度可达56 000bps(bps:每秒比特)
2、DSL(数字用户线):使用的也是电话线,但传输速度叫上面的快20倍
3、 电缆调制解调器:利用有线电视电缆进行数据传输,通常速度比DSL快。
4、 网络接口卡(NIC):将计算机接入局域网(LAN)的设备。局域网通常用于大学、商业组织和政府组织。速度甚至可达1000Mbps
5、无线网络:在家庭、商业和学校中极其常见。计算机可通过无线适配器连接到局域网或internet上。

0.3 计算机发展史上的鼻祖

阿兰·图灵(Alan Turing)
在这里插入图片描述

最近半个世纪以来,世界计算机科学界的重大进步,离不开图灵等人的理论奠基作用和多方面的开创性研究成果。图灵是当之无愧的计算机科学和人工智能之父。甚至认为,他在技术上的贡献及对未来世界的影响几乎可与牛顿、爱因斯坦等巨人比肩

图灵论文中的“用有限的指令和有限的存储空间可算尽一切可算之物”理论让当时所有的科学家震惊

美国计算机学会(ACM)的年度“图灵奖”,自从1966年设立以来,一直是世界计算机科学领域的最高荣誉,相当于计算机科学界的诺贝尔奖。至今,中国人只有姚期智院士获该奖项

冯·诺依曼(John von Neumann)
在这里插入图片描述
20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一,被后人称为**“计算机之父”和“博弈论之父”**

计算机基本工作原理是存储程序和程序控制,它是由世界著名数学家冯·诺依曼提出的。最简单的来说,冯诺依曼理论的要点是:数字计算机的数制采用二进制计算机应该按照程序顺序执行

根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
1、把需要的程序和数据送至计算机中。
2、必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
3、能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
4、能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
5、能够按照要求将处理结果输出给用户。

0.4 操作系统

操作系统(Operating System)是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动

硬件、操作系统、应用程序和用户之间的关系如图
在这里插入图片描述
操作系统的主要任务:
(1)控制和监视系统的活动
(2)分配和调配系统资源
(3)调度操作

0.5 万维网

万维网(World Wide Web,www,环球信息网)常简称为Web,发明者蒂姆·伯纳斯·李。分为Web客户端和Web服务器程序。 WWW可以让Web客户端(常用浏览器)访问浏览Web服务器上的页面。 是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源

B/S:browser server
C/S:client server

万维网是无数个网络站点和网页的集合,它们在一起构成了因特网(Internet)最主要的部分(因特网也包括电子邮件、Usenet以及新闻组)。它实际上是多媒体的集合,是由超级链接连接而成的。我们通常通过网络浏览器上网观看的,就是万维网的内容

0.6 职业发展与提升

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1 Java语言概述

在这里插入图片描述

1.1 软件开发介绍

软件开发
软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件应用软件之分

人机交互方式
(1)图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作

(2)命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令

常用的DOS命令:
(1)dir : 列出当前目录下的文件以及文件夹
(2)md : 创建目录
(3)rd : 删除目录
(4)cd : 进入指定目录
(5)cd.. : 退回到上一级目录
(6)cd\: 退回到根目录
(7)del : 删除文件
(8)exit : 退出 dos 命令行

常用快捷键:
(1) ← →:移动光标
(2) ↑ ↓:调阅历史操作命令
(3)Delete和Backspace:删除字符

1.2 计算机编程语言介绍

语言:是人与人之间用于沟通的一种方式
计算机语言:人与计算机交流的方式

第一代语言
机器语言:指令以二进制代码形式存在

第二代语言
汇编语言:使用助记符表示一条机器指令
在这里插入图片描述
第三代语言
高级语言:

(1)C、Pascal、Fortran面向过程的语言
(2)C++面向过程/面向对象
(3)Java跨平台的纯面向对象的语言
(4).NET跨语言的平台
(5)Python、Scala…

1.3 Java语言概述

SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言

一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中

随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言

后台开发Java、PHP、Python、Go、Node.js

(1)1991年 Green项目,开发语言最初命名为Oak (橡树)
(2)1994年,开发组意识到Oak 非常适合于互联网
(3)1996年,发布JDK 1.0,约8.3万个网页应用Java技术来制作
(4)1997年,发布JDK 1.1,JavaOne会议召开,创当时全球同类会议规模之最
(5)1998年,发布JDK 1.2,同年发布企业平台J2EE
(6)1999年,Java分成J2SE、J2EE和J2ME,JSP/Servlet技术诞生
(7)2004年,发布里程碑式版本:JDK 1.5,为突出此版本的重要性,更名为JDK 5.0
(8)2005年,J2SE -> JavaSE,J2EE -> JavaEE,J2ME -> JavaME
(9)2009年,Oracle公司收购SUN,交易价格74亿美元
(10)2011年,发布JDK 7.0
(11)2014年,发布JDK 8.0,是继JDK 5.0以来变化最大的版本
(12)2017年,发布JDK 9.0,最大限度实现模块化
(13)2018年3月,发布JDK 10.0,版本号也称为18.3
(14)2018年9月,发布JDK 11.0,版本号也称为18.9
在这里插入图片描述
从Java的应用领域来分,Java语言的应用方向主要表现在以下几个方面:
(1)企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。
(2)Android平台应用:Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。
(3)大数据平台开发:各类框架有Hadoop,spark,storm,flink等,就这类技术生态圈来讲,还有各种中间件如flume,kafka,sqoop等等 ,这些框架以及工具大多数是用Java编写而成,但提供诸如Java,scala,Python,R等各种语言API供编程。
(4)移动领域应用:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。

Java之父James Gosling团队在开发”Green”项目时,发现C缺少垃圾回收系统,还有可移植的安全性、分布程序设计和多线程功能。最后,他们想要一种易于移植到各种设备上的平台

Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言、C++语言完全相同。但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。JDK1.5又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱

(1)Java语言是易学的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
(2)Java语言是强制面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
(3)Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
(4)Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。
(5)Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。
(6)Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
(7)Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统的解释器中运行。
(8)Java是性能略高的。与那些解释型的高级脚本语言相比,Java的性能还是较优的。
(9)Java语言是原生支持多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。

1.4 Java程序运行机制及运行过程

Java语言的特点

特点一:面向对象
(1)两个基本概念:类、对象
(2)三大特性:封装、继承、多态

特点二:健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

特点三:跨平台性
(1)跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”
(2)原理:只要在需要运行 Java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。
在这里插入图片描述
因为有了JVM,同一个Java 程序在三个不同的操作系统中都可以执行。这样就实现了Java 程序的跨平台性

Java两种核心机制

1、Java虚拟机 (Java Virtal Machine)

(1)JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器
(2)对于不同的平台,有不同的虚拟机
(3)只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
(4)Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行
在这里插入图片描述
在这里插入图片描述
2、垃圾收集机制 (Garbage Collection)

(1)不再使用的内存空间应回收——垃圾回收

①在C/C++等语言中,由程序员负责回收无用内存

②Java 语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间

(2)垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预

Java程序仍会出现内存泄漏和内存溢出问题

1.5 Java语言的环境搭建

在这里插入图片描述
使用JDK的开发工具完成的java程序,交给JRE去运行

在这里插入图片描述
在这里插入图片描述
(1)JDK = JRE + 开发工具集(例如Javac编译工具等)
(2)JRE = JVM + Java SE标准类库

path:window操作系统执行命令时,所要搜寻的路径

1.6 开发体验—HelloWorld

1、将 Java 代码编写到扩展名为 .java 的文件中。
2、通过 javac 命令对该 java 文件进行编译
3、通过 java 命令对生成的 class 文件进行运行
在这里插入图片描述

1.7 常见问题及解决方法

在这里插入图片描述
(1)源文件名不存在或者写错
(2)当前路径错误
(3)后缀名隐藏问题

在这里插入图片描述
(1)类文件名写错,尤其文件名与类名不一致
(2)类文件不在当前路径下,或者不在classpath指定路径下

在这里插入图片描述
(1)声明为public的类应与文件名一致,否知编译失败
在这里插入图片描述
(1)编译失败,注意错误出现的行数,再到源代码中指定位置改错

1.8 注释(Comment)

用于注解说明解释程序的文字就是注释

Java中的注释类型:
(1)单行注释
(2)多行注释
(3)文档注释 (java特有)

1、提高了代码的阅读性,调试程序的重要方法
2、注释是一个程序员必须要具有的良好编程习惯
3、将自己的思想通过注释先整理出来,再用代码去体现

(1)单行注释
格式: //注释文字

(2)多行注释
格式: /* 注释文字 */

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行
多行注释里面不允许有多行注释嵌套

(3)文档注释(Java特有)
格式:

/**
@author 指定java程序的作者
@version 指定源文件的版本
*/

注释内容可以被JDK提供的工具 javadoc解析,生成一套以网页文件形式体现的该程序的说明文档

操作方式:
在这里插入图片描述
总结:

(1)Java源文件以“java”为扩展名源文件的基本组成部分是类(class),如本例中的HelloWorld类

(2)Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String[] args) {...}

(3)Java语言严格区分大小写

(4)Java方法由一条条语句构成,每个语句以“;结束

(5)大括号都是成对出现的,缺一不可

(6)一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名

1.9 Java API文档

(1)API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口
(2)Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
(3)下载API:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Additional Resources-Java SE 8 Documentation下载。
在这里插入图片描述
在这里插入图片描述

1.10 良好的编程风格

1、正确的注释和注释风格
(1)使用文档注释来注释整个类或整个方法。
(2)如果注释方法中的某一个步骤,使用单行或多行注释。

2、正确的缩进和空白
(1)使用一次tab操作,实现缩进
(2)运算符两边习惯性各加一个空格。比如:2 + 4 * 5。

3、块的风格
(1)Java API 源代码选择了行尾风格
在这里插入图片描述

1-11 常用的Java开发工具

文本编辑工具:
(1)记事本
(2)UltraEdit
(3)EditPlus
(4)TextPad
(5)NotePad

Java集成开发环境(IDE):
(1)JBuilder
(2)NetBeans
(3)Eclipse
(4)MyEclipse
(5)IntelliJ IDEA

2 Java基本语法

2.1 关键字和保留字

关键字(keyword)的定义和特点

1、定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
2、特点:关键字中所有字母都为小写
3、官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
在这里插入图片描述
在这里插入图片描述
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字

goto 、const

2.2 标识符

1、标识符:

(1)Java 对各种变量方法等要素命名时使用的字符序列称为标识符

(2)技巧:凡是自己可以起名字的地方都叫标识符

2、定义合法标识符规则:

(1)由26个英文字母大小写0-9 ,_或 $ 组成

(2)数字不可以开头

(3)不可以使用关键字和保留字,但能包含关键字和保留字。

(4)Java中严格区分大小写,长度无限制。

(5)标识符不能包含空格

3、Java中的名称命名规范

1、包名:多单词组成时所有字母都小写:xxxyyyzzz

2、类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

3、变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz

3、常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

注意
(1)在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

(2)Java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

2.3 变量

1、变量的概念:

(1)内存中的一个存储区域

(2)该区域的数据可以在同一类型范围内不断变化

(3)变量是程序中最基本的存储单元。包含变量类型变量名存储的值

2、变量的作用:

(1)用于在内存中保存数据

3、使用变量注意:

(1)Java中每个变量必须先声明后使用

(2)使用变量名来访问这块区域的数据

(3)变量的作用域:其定义所在的一对{ }内

(4)变量只有在其作用域内才有效

(5)同一个作用域内,不能定义重名的变量

声明变量
(1)语法:<数据类型> <变量名称>
(2)例如:int var;

变量的赋值
(1)语法:<变量名称> = <值>
(2)例如:var = 10;

声明和赋值变量
(1)语法: <数据类型> <变量名> = <初始化值>
(2)例如:int var = 10;

4、变量的分类-按数据类型

(1)对于每一种数据都定义了明确的具体数据类型强类型语言),在内存中分配了不同大小的内存空间
在这里插入图片描述
5、变量的分类-按声明的位置的不同

(1)在方法体外,类体内声明的变量称为成员变量

(2)在方法体内,声明的变量称为局部变量
在这里插入图片描述
注意:二者在初始化值方面的异同:
(1)同:都有生命周期
(2)异:局部变量除形参外,需显式初始化。

7、整数类型:byte、short、int、long

(1)Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
(2)Java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
(3)Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
在这里插入图片描述
1MB = 1024KB
1KB = 1024B
1B = 8bit
bit:计算机中的最小存储单位。
byte:计算机中基本存储单元。

8、浮点类型:float、double

(1)与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。
(2)浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
(3)float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double:双精度,精度是float的两倍。通常采用此类型。
(4)Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
在这里插入图片描述
9、字符类型:char

(1)char 型数据用来表示通常意义上“字符”(2字节)
(2)Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
(3)字符型变量的三种表现形式:
字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;
②Java中还允许使用
转义字符‘\’来将其后的字符转变为特殊字符型常量

例如:char c3 = ‘\n’; // '\n’表示换行符
③直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。
(4)char类型是可以进行运算的。因为它都对应有Unicode码
在这里插入图片描述
10、ASCII 码

(1)在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)有 0 和 1 两种状态,因此 8 个二进制位就可以组合出 256 种状态,这被称为一个字节(byte)。一个字节一共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从0000000 到 11111111。
(2)ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位最前面的1位统一规定为0

11、Unicode 编码

(1)乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码

(2)Unicode:一种编码,将世界上所有的符号都纳入其中每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题

(3)Unicode 的缺点:Unicode 只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储无法区别 Unicode 和 ASCII:计算机无法区分三个字节表示一个符号还是分别表示三个符号。另外,我们知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费

12、UTF-8

(1)UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式

(2)UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号根据不同的符号而变化字节长度

(3)UTF-8的编码规则:
①对于单字节的UTF-8编码该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。
②对于多字节的UTF-8编码,如果编码包含 n 个字节,那么第一个字节的前 n 位为1第一个字节的第 n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。

13、布尔类型:boolean

(1)boolean 类型用来判断逻辑条件,一般用于程序流程控制
①if条件控制语句;
②while循环控制语句;
③do-while循环控制语句;
④for循环控制语句;
(2)boolean类型数据只允许取值true和false无null
不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
②Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替:true用1表示,false用0表示

14、基本数据类型转换

(1)自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:
在这里插入图片描述
(2)有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型然后再进行计算
(3)byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型
(4)boolean类型不能与其它数据类型运算
(5)当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型

15、字符串类型:String

(1)String不是基本数据类型,属于引用数据类型
(2)使用方式与基本数据类型一致。例如:String str = “abcd”;
(3)一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。例如:
str = str + “xyz” ;
int n = 100;
str = str + n;

16、强制类型转换

(1)自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。

(2)通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型
如: String a = “43”; int i = Integer.parseInt(a);
boolean类型不可以转换为其它的数据类型

17、关于进制

1、所有数字在计算机底层都以二进制形式存在
2、对于整数,有四种表示方式:
(1)二进制(binary):0,1 ,满2进1,以0b或0B开头。
(2)十进制(decimal):0-9 ,满10进1。
(3)八进制(octal):0-7 ,满8进1,以数字0开头表示。
(4)十六进制(hex):0-9及A-F,满16进1,以0x或0X开头表示。此处的A-F不区分大小写。
如:0x21AF +1= 0X21B0
在这里插入图片描述
在这里插入图片描述
18、二进制

(1)Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位
(2)二进制的整数有如下三种形式:
原码直接将一个数值换成二进制数。最高位是符号位
负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
负数的补码:其反码加1
(3)计算机以二进制补码的形式保存所有的整数。
正数的原码、反码、补码都相同
负数的补码是其反码+1

为什么要使用原码、反码、补码表示形式呢?

计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。
在这里插入图片描述
二进制 --> 十进制
在这里插入图片描述
在这里插入图片描述
十进制–>二进制:除2取余的逆
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
19、进制间转化

进制的基本转换
(1)十进制 二进制互转
①二进制转成十进制 乘以2的幂数
②进制转成二进制 除以2取余数
(2)二进制 八进制互转
(3)二进制 十六进制互转
(4)十进制 八进制互转
(5)十进制 十六进制互转
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
(1)算术运算符
(2)赋值运算符
(3)比较运算符(关系运算符)
(4)逻辑运算符
(5)位运算符
(6)三元运算符

1、算术运算符
在这里插入图片描述
算术运算符的注意问题
(1)如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
(2)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时只保留整数部分而舍弃小数部分
(3)“+”除字符串相加功能外,还能把非字符串转换成字符串

2、赋值运算符

(1)符号:=
①当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
②支持连续赋值。
(2)扩展赋值运算符: +=, -=, *=, /=, %=

3、比较运算符
在这里插入图片描述
(1)比较运算符的结果都是boolean型,也就是要么是true,要么是false
(2)比较运算符“==”不能误写成“=” 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值