收藏 分享(赏)

【编程基础】java-basic-introduction.pdf

上传人:nanchangxurui 文档编号:7168968 上传时间:2022-09-07 格式:PDF 页数:1650 大小:30.52MB
下载 相关 举报
【编程基础】java-basic-introduction.pdf_第1页
第1页 / 共1650页
【编程基础】java-basic-introduction.pdf_第2页
第2页 / 共1650页
【编程基础】java-basic-introduction.pdf_第3页
第3页 / 共1650页
【编程基础】java-basic-introduction.pdf_第4页
第4页 / 共1650页
【编程基础】java-basic-introduction.pdf_第5页
第5页 / 共1650页
亲,该文档总共1650页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、1.12.12.1.12.1.23.13.1.13.1.23.1.33.1.43.1.53.1.63.1.73.1.83.1.93.1.103.1.113.1.124.14.1.14.1.24.1.34.1.44.1.54.1.64.1.74.1.84.1.9目录前言第1章Java开发入门Java概述JDK、JRE、JVM的区别与联系第2章Java编程基础Java语法基础-1Java语法基础-2基本数据类型包装类阿里巴巴Java开发手册阿里Java开发手册最新完美版,千锤百炼始出炉阿里Java开发手册终极版!GoogleJava编程风格指南Java程序员必读的书籍详细介绍JAVA和C+区别Ja

2、va与指针引用、指针和句柄的区别什么是堆和栈,它们在哪儿?第3章面向对象数组工具类文档注释面向对象Object类单例设计模式封装继承多态抽象类与接口14.1.104.1.114.1.124.1.135.15.1.15.1.25.1.35.1.45.1.55.1.65.1.76.16.1.16.1.26.1.36.1.46.1.56.1.66.1.76.1.86.1.96.1.106.1.116.1.126.1.136.1.146.1.156.1.166.1.17接口回调闭包内部类异常第4章常见对象String类正则表达式基础正则表达式的应用常用正则表达式字符串格式化System类和Runtim

3、e类Math类和Random类第5章多线程多线程线程池volatile关键字解析HandlerThreadCallable和FutureJava中的Runnable、Callable、Future、FutureTask的区别与示例Java程序死锁问题原理及解决方案线程锁技术定时器、互斥、同步通信技术线程范围内共享数据多个线程之间共享数据的方式探讨使用JDK5中同步技术的3个面试题同步工具类原子类集合及concurrent并发包总结JDK8对并发的新支持阻塞队列26.1.186.1.196.1.207.17.1.17.1.27.1.37.1.47.1.57.1.67.1.77.1.87.1.97

4、.1.107.1.117.1.127.1.137.1.147.1.158.18.1.18.1.28.1.38.1.48.1.58.1.68.1.78.1.88.1.98.1.10Java并发工具包concurrent用户指南Fork/Join框架介绍多线程问题总结第6章集合框架Collection接口List接口Set接口Queue接口集合的遍历集合工具类Map接口Predicate和Stream操作集合集合框架的综合应用Java集合类型详解LinkedList源码剖析LinkedHashMap源码剖析HashMap、哈希表、哈希函数HashMap的实现原理HashMap源码剖析第7章IO流I

5、O流之File类IO流之字节流IO流之字符流常用IO流NIONIO工具类AIONIO和AIO序列化流对象的深复制和浅复制39.19.1.19.1.29.1.310.110.1.110.1.210.1.310.1.410.1.510.1.610.1.710.1.810.1.911.111.1.111.1.211.1.311.1.411.1.511.1.611.1.711.1.811.1.911.1.1011.1.1112.112.1.112.1.212.1.3第8章网络编程网络编程写给那些让我糊里糊涂的HTTP、TCP、UDP、Socket你应该知道的计算机网络知识第9章安全加密和安全有关的那些

6、事Base64对称加密非对称加密消息摘要MessageDigest数字签名和数字证书Https扫盲贴Https编程网络安全第10章反射机制类加载器反射1反射2注解1注解2注解3基础篇:带你从头到尾玩转注解编译时注解依赖注入动态代理1动态代理2第11章新特性JDK新特性泛型基础1泛型基础2412.1.412.1.512.1.612.1.712.1.812.1.912.1.1013.113.1.1泛型封装你应该更新的Java知识你应该更新的Java知识之常用程序库1你应该更新的Java知识之常用程序库2你应该更新的Java知识之ObserverGoogleGuava官方教程Java代码性能优化第1

7、2章内存管理JVM内存模型StackHeap5Java基础入门笔记十年生死两茫茫,不思量,自难忘,华年短暂,陈辞岁月悠悠伤,满腔热血已芜荒,展未来,后生强,战战兢兢,如履薄冰心彷徨,青丝化雪、鬓角成霜,已是英雄迟暮,人生怎慷慨激昂?对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。GitHub托管主页https:/ 点击桌面计算

8、机 选择属性选择高级系统设置 选择高级选项卡 点击环境变量 下方系统变量中查找 path双击pathXP系统:右键点击桌面计算机选择属性选择高级选项卡点击环境变量下方系统变量中查找path双击path将jdk安装目录下的bin目录添加到最左边并添加分号5.3.2path环境变量配置方式2path环境变量的参照形配置方式创建新的变量名称:JAVA_HOME为JAVA_HOME添加变量值:JDK安装目录将path环境变量中JDK目录修改:%JAVA_HOME%bin;path环境变量具有先后顺序5.3.3classpath环境变量配置方式classpath环境变量配置方式创建新的变量名称:clas

9、spath值设定为指定的还有class文件的目录,多个目录间使用分号(;)分割Java概述32作用:使classpath目录中的.class文件可以在任意目录运行技巧:通常将配置的目录最前面添加.配置,即便当前目录,使.class文件搜索时首先搜索当前目录,然后根据目录配置的顺序依次查找,找到后即运行,因此classpath目录中的配置存在先后顺序5.4path和classpath的区别path环境变量里面记录的是可执行性文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找classpath环境变量里记录的是java类的运行文件所在的目录6.Jav

10、a的运行机制使用Java语言进行程序设计时,不仅要了解Java语言的显著特点,还需要了解Java程序的运行机制。Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。以HelloWorld为例,对Java程序的运行过程进行详细的分析,具体步骤如下:编写一个HelloWorld.java的文件。使用“javacHelloWorld.java”命令开启Java编译器并进行编译。编译结束后,会自动生成一个HelloWorld.class的字节码文件。使用“jav

11、aHelloWorld”命令启动Java虚拟机运行程序,Java虚拟机首先将编译好的字节码文件加载到内存,这个过程被称为类加载,它是由类加载器完成的,然后虚拟机针对加载到内存中的Java类进行解释执行,便可看到运行结果。通过上面的分析不难发现,Java程序是由虚拟机负责解释执行的,而并非操作系统。这样做的好处是可以实现跨平台性,也就是说针对不同的操作系统可以编写相同的程序,只需安装不同版本的虚拟机即可,如下图所示:Java概述33从上图可以看出,不同的操作系统需要使用不同版本的虚拟机,这种方式使得Java语言具有“一次编写,到处运行(writeonce,runanywhere)”的特性,有效地

12、解决了程序设计语言在不同操作系统编译时产生不同机器代码的问题,大大降低了程序开发和维护的成本。需要注意的是,Java程序通过Java虚拟机可以达到跨平台特性,但Java虚拟机并不是跨平台的。也就是说,不同操作系统上的Java虚拟机是不同的,即Windows平台上的Java虚拟机不能用在Linux平台上,反之亦然。7.Eclipse开发工具在实际项目开发过程中,由于使用记事本编写代码速度慢,且不容易排错,所以程序员很少用它来编写代码。为了提高程序的开发效率,大部分软件开发人员都是使用集成开发工具(IDE,IntegratedDevelopmentEnvironment)来进行Java程序开发的。

13、正所谓“工欲善其事,必先利其器”,接下来就为读者介绍一种Java常用的开发工具Eclipse。Eclipse是由蓝色巨人IBM花费巨资开发的一款功能完整且成熟的IDE集成开发环境,它是一个开源的、基于Java的可扩展开发平台,是目前最流行的Java语言开发工具。Eclipse具有强大的代码编排功能,可以帮助程序开发人员完成语法修正、代码修正、补全文字、信息提示等编码工作,大大提高了程序开发的效率。Eclipse的设计思想是“一切皆插件”。就其本身而言,它只是一个框架和一组服务,所有功能都是将插件组件加入到Eclipse框架中来实现的。Eclipse作为一款优秀的开发工具,其自身附带了一个标准的

14、插件集,其中包括了Java开发工具(JDK),因此,使用Eclipse工具进行Java程序开发不需要再安装JDK以及配置Java运行环境。下面将为读者具体的讲解Eclipse工具的使用。Java概述348.包的定义与使用为了便于对硬盘上的文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发中,也需要将编写的类在项目中分目录存放,以便于文件管理。为此,Java引入了包(package)机制,程序可以通过声明包的方式对Java类定义目录。Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用package语句,具体示例如下:packagecn.itcast.c

15、hapter01;/使用package关键字声明包publicclassExample01需要注意的是,包的声明只能位于Java源文件的第一行。在实际程序开发过程中,定义的类都是含有包名的,如果没有显式地声明package语句,创建的类则处于默认包下,在实际开发中,这种情况是不应该出现的,本教材的示例代码主要展现的是功能部分的代码,所以在大多数示例代码中没有为示例指定包名,但是在提供的源码中,都已使用包名。在开发时,一个项目中可能会使用很多包,当一个包中的类需要调用另一个包中的类时,就需要使用import关键字引入需要的类。使用import可以在程序中一次导入某个指定包下的类,这样就不必在每次

16、用到该类时都书写完整类名,简化了代码量。使用import关键字的具体格式如下所示:import包名.类名;需要注意的是,import通常出现在package语句之后,类定义之前。如果有时候需要用到一个包中的许多类,则可以使用“import包名.*;”来导入该包下所有类。在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java包及其子包下,Java扩展的大部分类都放在javax包及其子包下。为了便于后面的学习,接下来简单介绍Java语言中的常用包。java.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等。:包含Java网络编程相关的类和接

17、口。java.io:包含了Java输入、输出有关的类和接口。java.awt:包含用于构建图形界面(GUI)的相关类和接口。Java概述35除了上面提到的常用包,JDK中还有很多其它的包,比如数据库编程的java.sql包,编写GUI的javax.swing包等等,JDK中所有包中的类构成了Java类库。在以后的章节中,这些包中的类和接口将逐渐介绍,这里只需要有个大致印象即可。Java概述361.详细介绍1.1JVM-javavirtualmachineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件

18、可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。JVM通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。但是在一些小的方面,JVM的实现也是互不相同的,比如垃圾回收算法,线程调度算法(可能不同OS有不同的实现)。JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或OS的系统调用,保护用户免被恶意程序骚扰。JVM对上层的Java源文件是

19、不关心的,它关注的只是由源文件生成的类文件(classfile)。类文件的组成包括JVM指令集,符号表以及一些补助信息。JDK、JRE、JVM的区别与联系37JDK、JRE、JVM的区别与联系381.2JRE-javaruntimeenvironmentJRE是指java运行环境。光有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在你写完java程序编译成.c

20、lass之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了。(jre里有运行.class的java.exe)JRE是Sun公司发布的一个更大的系统,它里面就有一个JVM。JRE就与具体的CPU结构和操作系统有关,我们从Sun下载JRE的时候就看到了不同的各种版本。同JVM一起组成JRE的还有一些API(如awt,swing等)。JRE是运行Java程序必不可少的。JRE(JavaRuntimeEnvironment),是运行Java程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件),JRE的地位就象一台PC机一样,我们写好的Win32应用

21、程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。JDK、JRE、JVM的区别与联系39JRE里面有一个JVM,JRE与具体的CPU结构和操作系统有关,我们从Sun下载JRE的时候就看到了不同的各种版本,同JVM一起组成JRE的还有一些API(如awt,swing等),JRE是运行Java程序必不可少的.1.3JDK-javadevelopmentkitJDK是java开发工具包,基本上每个学java的人都会先在机器上装一个JDK,那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正

22、在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。bin:最主要的是编译器(javac.exe)include:java和JVM交互用的头文件lib:类库jre:java运行环境注意:这里的bin、lib文件夹和jre里的bin、lib是不同的,总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。eclipse、idea等其他IDE有自己的编译器而不是用JDKbin目录中自带的,所以在安装时你会发现他们只要求你选中jre路径就ok了。2.三者联系JDK、JRE

23、、JVM的区别与联系40Java喊出的带有标志性的口号“WriteOnce,RunAnywhere(一次编写,到处运行)”,正是建立在JRE的基础之上。何以实现?就是在Java应用程序和操作系统之间增加了一虚拟层JRE。程序源代码不是直接编译、链接成机器代码,而是先转化到字节码(bytecode)这种特殊的中间形式,字节码再转换成机器码或系统调用。前者是传统的编译方法,生成的机器代码就不可避免地跟特殊的操作系统和特殊的机器结构相关。而Java程序的字节码文件可以放到任意装有JRE的计算机运行,再由不同JRE的将它们转化成相应的机器代码,这就实现了Java程序的可移植性。这样程序员也不用去关心程

24、序运行的具体环境,而可以专心编写软件。这种分层抽象、隐藏细节的思想在计算机科学中处处可见,比如机器组织结构的设计、网络协议的实现等。Pascal语言的发明者NiklausWirth,就富有预见性地指出应该有这样一种可移植的语言,其生成的中间代码可以在一台假想的机器(ahypotheticalmachine)上运行。而Java虚拟机(Javavirtualmachine或JVM)就是这样的一台机器,它模拟实际处理器的结构,解释字节码。怎么一会说是JRE,一会儿又成了JVM,两者是否同物不同名?回答是否定的。JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的

25、,我们编写的Java程序也必须要JRE才能运行。JDK、JRE、JVM的区别与联系41要运行Applet,在客户端必须安装有JRE,即“运行时”,容易一点理解,就象所谓的“插件”,要开发JAVA应用程序Web应用,就必须在服务器端安装相应的JVM+JDK了(开发应用Javaweb应用时,客户端不需要安装任何的JVM)如果你使用JAVA开发应用,就需要安装JRE+JDK,就是J2SE如果在客户端运行Applet,客户端浏览器必须嵌有JAVAJVM,如果没有,就需要安装,即:在客户端创建JRE(运行时,包含JVM),而客户端是不需要做开发的,所以,JDK就没有必要安装了不同版本的Applet在不同

26、的JVM下可能无法正常运行,而MicrosoftJVM只是SunJVM的“低版本”,微软在windowsxp/2003中干脆将JVM去掉了JDK、JRE、JVM的区别与联系42第2章Java编程基础Java语法基础-1Java语法基础-2基本数据类型包装类阿里巴巴Java开发手册阿里Java开发手册最新完美版,千锤百炼始出炉GoogleJava编程风格指南详细介绍JAVA和C+区别什么是堆和栈,它们在哪儿?第2章Java编程基础431.关键字关键字是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。和其它语言一样,Java中保留了许多关键字,例如,class、public等,下面列举的

27、是Java中所有的关键字。1.1关键字概述被Java语言赋予特定含义的单词1.2关键字特点组成关键字的字母全部小写1.3关键字注意事项goto和const作为保留字存在,目前并不使用类似Notepad+这样的高级记事本,针对关键字有特殊的颜色标记,非常直观Java语法基础-1442.标识符2.1标识符概述就是给类,接口,方法,变量等起名字时使用的字符序列2.2组成规则由英文大小写字母、数字字符、$(美元符号)、_(下划线)组成2.3注意事项不能以数字开头不能是Java中的关键字区分大小写2.4标识符常见命名规则:见名知意2.4.1包Java语法基础-145其实就是文件夹,用于把相同的类名进行区

28、分,全部小写,单级:liuyi,多级:cn.itcast为了便于对硬盘上的文件进行管理,通常都会将文件分目录进行存放。同理,在程序开发中,也需要将编写的类在项目中分目录存放,以便于文件管理。为此,Java引入了包(package)机制,程序可以通过声明包的方式对Java类定义目录。Java中的包是专门用来存放类的,通常功能相同的类存放在相同的包中。在声明包时,使用package语句,具体示例如下:packagecn.itcast.chapter01;/使用package关键字声明包publicclassExample01需要注意的是,包的声明只能位于Java源文件的第一行。在实际程序开发过程中

29、,定义的类都是含有包名的,如果没有显式地声明package语句,创建的类则处于默认包下,在实际开发中,这种情况是不应该出现的,本教材的示例代码主要展现的是功能部分的代码,所以在大多数示例代码中没有为示例指定包名,但是在提供的源码中,都已使用包名。在开发时,一个项目中可能会使用很多包,当一个包中的类需要调用另一个包中的类时,就需要使用import关键字引入需要的类。使用import可以在程序中一次导入某个指定包下的类,这样就不必在每次用到该类时都书写完整类名,简化了代码量。使用import关键字的具体格式如下所示:import包名.类名;需要注意的是,import通常出现在package语句之后

30、,类定义之前。如果有时候需要用到一个包中的许多类,则可以使用 import包名.*;来导入该包下所有类。在JDK中,不同功能的类都放在不同的包中,其中Java的核心类主要放在java包及其子包下,Java扩展的大部分类都放在javax包及其子包下。为了便于后面的学习,接下来简单介绍Java语言中的常用包。java.util:包含Java中大量工具类、集合类等,例如Arrays、List、Set等。:包含Java网络编程相关的类和接口。java.io:包含了Java输入、输出有关的类和接口。java.awt:包含用于构建图形界面(GUI)的相关类和接口。Java语法基础-146除了上面提到的常用

31、包,JDK中还有很多其它的包,比如数据库编程的java.sql包,编写GUI的javax.swing包等等,JDK中所有包中的类构成了Java类库。在以后的章节中,这些包中的类和接口将逐渐介绍,这里只需要有个大致印象即可。2.4.2类或者接口一个单词:单词的首字母必须大写,举例:Student,Dog多个单词:每个单词的首字母必须大写举例:HelloWorld,StudentName2.4.3方法和变量一个单词:单词的首字母小写,举例:main,age多个单词:从第二个单词开始,每个单词的首字母大写,举例:studentAge,showAllNames()2.4.4常量一个单词:全部大写,举例

32、:PI多个单词:每个字母都大写,用_隔开,举例:STUDENT_MAX_AGE3.注释3.1注释概述用于解释说明程序的文字3.2Java中注释分类格式单行注释,格式: /注释文字多行注释,格式: /*注释文字*/文档注释,格式: /*注释文字*/Java语法基础-147/*注释:用于解释说明程序的文字Java中注释的分类及格式单行注释:/多行注释:/星星/注意:多行不可以嵌套使用,而单行是可以的文档注释:被javadoc工具解析生成一个说明书,面向对象部分讲解。*/这是我的注释案例classZhuShiDemo/main方法是主方法/是程序的入口/被jvm调用publicstaticvoidm

33、ain(Stringargs)System.out.println(好好学习,天天向上);对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档注释是一个程序员必须要具有的良好编程习惯初学者编写程序可以养成习惯:先写注释再写代码将自己的思想通过注释先整理出来,在用代码去体现因为代码仅仅是思想的一种体现形式而已Java语法基础-148/*需求:我准备写一个java程序,把HelloWorld这句话输出在控制台分析:A:要写一个Java程序,必须

34、定义类B:把数据能够输出,说明我们的程序是可以独立运行的,而程序要独立运行,必须定义main方法C:把数据输出在控制台,必须使用输出语句实现:A:java语言提供了一个关键字:class用来定义类,后面跟的是类名B:main方法的格式是固定的:publicstaticvoidmain(Stringargs)C:输出语句的格式是固定的:System.out.println(HelloWorld);HelloWorld这个内容是可以改变的*/这是我的HelloWorld案例classHelloWorld/*为了程序能够独立运行,定义main方法main方法是程序的入口被jvm自动调用*/publi

35、cstaticvoidmain(Stringargs)/为了把数据显示在控制台,我们就使用了输出语句System.out.println(HelloWorld);4.常量、进制和进制转换4.1常量概述Java语法基础-149在程序执行的过程中其值不可以发生改变4.2Java中常量分类4.2.1字面值常量字符串常量:用双引号括起来的内容,举例:“hello”,“world”整数常量:所有整数,举例:12,23小数常量:所有小数,举例:12.34,56.78字符常量:用单引号括起来的内容,举例:a,A,0布尔常量,较为特有,举例:true,false空常量,举例:null4.2.2自定义常量/*常

36、量:在程序执行过程中,其值不发生改变的量。分类:A:字面值常量B:自定义常量(后面讲)字面值常量A:字符串常量用双引号括起来的内容。举例:hello,world,HelloWorldB:整数常量所有的整数举例:100,200C:小数常量所有的小数举例:10.23,110.11D:字符常量用单引号括起来的内容举例:a,A,0错误的:abE:布尔常量比较特殊举例:true,falseF:空常量后面讲举例:nullJava语法基础-150*/classConstantDemopublicstaticvoidmain(Stringargs)/字符串常量的输出System.out.println(hel

37、lo);/整数常量的输出System.out.println(100);/小数常量的输出System.out.println(100.10);/字符常量的输出System.out.println(a);System.out.println(A);System.out.println(0);/这个是有问题的/System.out.println(ab);/布尔常量的输出System.out.println(true);System.out.println(false);4.3Java针对整数常量提供了4种表现形式二进制,八进制,十进制,十六进制Java语法基础-1514.4进制概述进制:就是进位

38、制,是人们规定的一种进位方法。对于任何一种进制-X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。PS:二进制的由来:任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7超过7就进位了,这就是八进制。但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。规律:进制越大,

39、表现形式越短。4.5不同进制的数据组成二进制,由0,1组成。以0b开头八进制,由0,1,7组成。以0开头十进制,由0,1,9组成。整数默认是十进制的十六进制,由0,1,9,a,b,c,d,e,f(大小写均可)。以0 x开头Java语法基础-152/*不同进制的数据表现:二进制:由0,1组成。以0b开头。八进制:由0,1,.7组成。以0开头。十进制:由0,1,.9组成。默认整数是十进制。十六进制:由0,1,.9,a,b,c,d,e,f(大小写均可)组成。以0 x开头。*/classJinZhiDemopublicstaticvoidmain(Stringargs)System.out.print

40、ln(100);/十进制System.out.println(0b100);/二进制System.out.println(0100);/八进制System.out.println(0 x100);/十六进制运行结果4.6进制转换其他进制到十进制十进制到其他进制Java语法基础-153十进制和二进制的快速转换,8421码,也叫BCD码二进制和八进制,十六进制如何转换以十进制作为桥梁,二进制到八进制3位组合,二进制到十六进制4位组合PS:1、其他进制到十进制系数:就是每一位上的数据基数:X进制,基数就是X权:在右边,从0开始编号,对应位上的编号即为该位的权结果:把系数*基数的权次幂相加即可2、十进

41、制到其他进制除基取余,直到商为0,余数反转。4.7有符号数据表示法Java语法基础-154在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外补码:正数的补码与其原码相同;负数的补码是在其反码的末位加14.8练习4.8.1得到下面数据的十进制值Java语法基础-1550b10101=124+122+1*20=16+4+1=210123=182+281+3*80=64+16+3=830 x3c=316

42、1+c160=48+12=604.8.2得到下面数据的二进制,十进制,十六进制52分别得到二进制,十进制,十六进制得到二进制:52/2=26026/2=13013/2=616/2=303/2=111/2=010b110100得到八进制:52/8=646/8=06064得到十六进制:Java语法基础-15652/16=343/16=030 x344.8.3有符号数据表示法的练习A:已知某数X的原码为10110100B,试求X的补码和反码。符号位数值位原码:10110100反码:11001011补码:11001100B:已知某数X的补码11101110B,试求其原码符号位数值位补码:1110111

43、0反码:11101101原码:100100105.变量在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。5.1变量概述在程序执行的过程中,在某个范围内其值可以发生改变的量,理解:如同数学中的未知数5.2变量定义格式数据类型变量名=初始化值;注意:格式是固定的,记住格式,以不变应万变5.3变量的组成规则Java语法基础-1571、从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后

44、必须进行赋值(填充内容),才能使用。通过画图说明一个变量的组成部分数据类型,变量名,变量值2、为什么要定义变量呢?用来不断的存放同一类型的常量,并可以重复使用6.数据类型和类型转换Java是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序会报错。Java语法基础-1586.1数据类型6.1.1Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间6.1.2所谓有效数字:具体地说,是指在分析工作中实际能够测量到的数字。所谓能够测量到的是包括最后一位估计的,不确定

45、的数字。对于一个近似数,从左边第一个不是0的数字起,到精确到的位数止,所有的数字都叫做这个数的有效数字。6.1.3Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。Java语言的整型常量默认为int型,声明long型常量可以后加l或L,如:inti1=600;/正确longl1=88888888888L;/必须加l否则会出错与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。Java浮点类型常量有两种表示形式,十进制数形式,如:3.14314.0科学记数法形式,如3.14e23.14*102Java浮点型常量默认为dou

46、ble型,如要声明一个常量为float型,则需在数字后面加f或F,如:doubled=12345.6;/正确floatf=12.3f;/必须加f否则会出错Java语法基础-159char型数据用来表示通常意义上的“字符”字符常量为用单引号括起来的单个字符,例如:charch1=a;charch2=中;Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示。注:Unicode是全球语言统一编码boolean类型适于逻辑运算,一般用于程序流程控制。boolean类型数据只允许取值true或false,不可以0或非0的整数替代true和false,这点和C语言不同。数据

47、类型基本数据类型:整型byte、short、int、long,浮点型float、double,字符型char,布尔型boolean引用数据类型:类class、接口interface、数组/*数据类型:Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。数据类型分类:A:基本数据类型B:引用数据类型(类,接口,数值)基本数据类型:4类8种A:整数占用字节数byte1short2Java语法基础-160int4long8B:浮点数float4double8C:字符char2D:布尔boolean1注意:整数默认是int类型浮点数默认是double类型。长整型后缀用L或者l标记。建议使

48、用L。单精度浮点数用F或者f标记。建议使用F。*/classDataTypeDemopublicstaticvoidmain(Stringargs)/定义变量的格式:/数据类型变量名=初始化值;/定义一个字节变量byteb=10;System.out.println(10);System.out.println(b);/定义一个短整型变量shorts=100;System.out.println(s);/定义一个整型变量inti=1000;System.out.println(i);/超过了int的范围/intj=1000000000000;longj=1000000000000L;Java语

49、法基础-161/longj=100L;System.out.println(j);/定义浮点数据变量floatf=12.345F;System.out.println(f);doubled=12.345;System.out.println(d);/定义字符变量charch=a;System.out.println(ch);/定义布尔变量booleanflag=true;System.out.println(flag);运行结果:6.1.4使用变量的时候要注意的问题:A:作用域变量定义在哪个大括号内,它就在这个大括号内有效。并且,在同一个大括号内不能同时定义同名的变量。B:初始化值没有初始化值

50、的变量不能直接使用。你只要在使用前给值就行,不一定非要在定义的时候立即给值。推荐在定义的时候给值。定义变量的格式:a:数据类型变量名=初始化值;b:数据类型变量名;Java语法基础-162变量名=初始化值;C:在一行上建议只定义一个变量可以定义多个,但是不建议6.2类型转换当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。6.2.2默认转换(从小到大的转换)自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。要实现自动类型转换,必须同时满足两个条件,第一是两种数据类型彼此

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 研究报告 > 可研报告

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报