-
记7月11日下午二进制软件开发岗面试
2019-07-11 21:14:16表的常见字段类型有哪些? 3.SQL查询语句的语法是什么?模糊查找、分组、求和的语法呢?SQL更新语句的语法是什么? 4.对什么Web后端编程工具比较熟悉?其中经常用到的有哪些对象、哪些方法?如何获得前端请求URL.....下午的面试题相对来说较容易回答了一点,不过自我感觉有点偏前端。
1.如何理解面向对象的编程OOP?有什么重要特征?
2.对什么关系型数据库DBMS比较熟悉?数据库设计的三大范式?表的常见字段类型有哪些?
3.SQL查询语句的语法是什么?模糊查找、分组、求和的语法呢?SQL更新语句的语法是什么?
4.对什么Web后端编程工具比较熟悉?其中经常用到的有哪些对象、哪些方法?如何获得前端请求URL里面的参数值?
5.Web后端编程,在不同页面之间传递数据,有哪几种方法?
6.Web前端编程:常见的HTML元素有哪些(5个即可)?常见的css属性有哪些(5个即可)?
7.Web前端编程:获取HTML页面上某个标签元素,原生的JavaScript代码是什么?如何获取HTML页面上某个Table里面的单元格数量?请编写具体的js语句。
-
语言软件生成outsid_常用的C语言开发工具有哪些
2021-01-14 09:18:05计算机只能理解识别二进制代码,也就是0和1。我们用机器语言开发我们得记住计算机所有的指令代码和代码涵义。这样的编程枯燥而繁琐费力,也容易出错。汇编语言应运而生,汇编语言用助记符代替机器指令,但助记符量...编程语言有很多种,主要分为三大类,分别是机器语言、汇编语言、高级语言。计算机只能理解识别二进制代码,也就是0和1。我们用机器语言开发我们得记住计算机所有的指令代码和代码涵义。这样的编程枯燥而繁琐费力,也容易出错。汇编语言应运而生,汇编语言用助记符代替机器指令,但助记符量大难记,而且也枯涩的很。
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群583650410,不管你是小白还是大牛欢迎入驻,大家一起交流成长。
C语言可以这样比喻,是一门非常强大的内功心法,学会它可以做到一法通万法。这也是它至今不衰的原因。说了这么多C语言的优点,现在来说说它的缺点。C语言最大的优点也是它最大的缺点,拥有强大的力量时应时刻保持警惕。C语言程序设计要求不严格,程序设计的自由度比较大。讲个笑话,一浪就容易翻。C语言因其程序设计自由的特点,出现的错误也往往难以察觉,尤其是涉及指针的错误。
一些刚开始接触C语言编译的小伙伴想下载一款C语言编译器来使用,网络上不少C语言编译器相关的软件,让人难以抉择。那么,C语言编译器哪个好?今天的文章,优雅的程序猿我给小伙伴们整理了几款好用的C语言编译器推荐给大家,需要C语言编译器的小伙伴们,了解一下哦!
一、Dev-C++
Dev-C++ 是一个C++ 开发工具。它包括多页面窗口、工程编辑器,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序。它也提供高亮度语法显示的,以减少编辑错误。
Dev-C++是一个Windows下的C和C++程序的集成开发环境。它使用MingW32/GCC编译器,遵循C/C++标准。开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,能够适合初学者与编程高手的不同需求,是学习C或C++的首选开发工具!
二、mingw
MinGW是Minimalist GNU on Windows的简称,是指只用自由软件来生成纯粹的Win32可执行文件的编译环境。
一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行库。实际上MinGW 并不是一个C/C++ 编译器,而是一套GNU工具集合。除开GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的GNU 程序开发工具 (比如gawk bison 等等)。
开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在Windows 的人提供一套符合GNU 的工作环境。总体说来,使用MinGW 就是GNU。
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群583650410,不管你是小白还是大牛欢迎入驻,大家一起交流成长。
三、WIN-TC
初学C的一款比较好的软件,也是学习C的一款比较官方标准的软件
WIN-TC是一个turbo C2 WINDOWS平台开发工具,最大特点是支持中文界面,支持鼠标操作,程序段复制,为初学c语言、对高等编程环境不熟悉的同志们非常有帮助。
该软件使用turbo C2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。并提供一组相关辅助工具令你在编程过程中更加游刃有余,如虎添翼。
WIN-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统上。
四、Cygwin
Cygwin是一个用于在Windows上模拟Linux环境的软件。它可以作为那些虚拟机软件的一个部分替代品。
运行Cygwin后,你会得到一个类似Linux的Shell环境,在其中你可以使用绝大部分Linux软件和功能。如Gcc,Make,Vim,Emacs等等。总之如果你想使用某个Linux下的功能,而windows上又找不到好的替代品的话,你就可以用Cygwin。
五、Microsoft Visual stdudio
Visual Studio(VS) 是一套非常完备的工具和服务,可帮助小伙伴为 Microsoft 平台和其他平台创建各种各样的应用程序。Visual Studio 还可将您所有的项目、团队和利益干系人联系在一起。现在您的团队可以从任何位置以虚拟方式进行更为敏捷的合作,无论他们采用何种开发工具。
功能介绍
可以通过强大的集成开发环境构建面向 Windows、Android、iOS 以及 Web 的出色应用。使用任何 IDE 或编辑器在云中进行版本控制、敏捷、持续交付、应用程序分析协作。
适用于所有操作系统的编辑器使用可在 Windows、OS X 或 Linux 上运行的免费代码编辑器构建和调试现代 Web 和云应用程序。
六、CodeBlocks
codeblocks是一款功能强大的C/C++集成开发环境,软件支持应用程序的开发、也可以对现有的程序进行编译,在设计过程中,您可以随意调试软件,codeblocks带有调试的环境,可以自由控制对程序的调试、停止、生成并运行等,功能非常丰富;
codeblocks扩展性能非常强大,软件内置大量的开发插件程序,你可以直接在软件中进行连接下载,帮助您获得更高效、稳定、快捷的开发辅助程序,codeblocks新版在项目构建、可视化设计、调试、代码生成等方面都有巨大的提升,需要的小伙伴们可以下载体验。
-
java编程入门必学六大知识-蛙课网
2020-08-12 17:00:23我们做java编程,一定要对计算机有所了解,比如硬件有哪些、软件有哪些、进制转换、计算机体系结构、计算机语言发展史等一些基础知识就可以。 二、安装JDK及配置环境变量 1.百度下载jdk安装包;2…安装JDK,基本上点...Java编程基础知识的学习,是每一个java程序员进入编程领域第一个要学习的内容,只有基础学习好了,才能发展的更好,那么对于新手刚入门应该学习哪些知识呢,接下来我们看一下java编程入门必学六大知识。
一、计算机方面的内容
我们做java编程,一定要对计算机有所了解,比如硬件有哪些、软件有哪些、进制转换、计算机体系结构、计算机语言发展史等一些基础知识就可以。
二、安装JDK及配置环境变量
1.百度下载jdk安装包;2…安装JDK,基本上点下一步就能完成安装;3.配置JDK的环境变量,打开以下路径:计算机→属性→高级系统设置→高级→环境变量,系统变量→新建 JAVA_HOME 变量 。变量值写jdk安装目录;系统变量→寻找 Path 变量→编辑,在变量值最后输入“ ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”,系统变量→新建 CLASSPATH 变量,变量值填写“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;”4.检测是否配置成功,Win+R键输入cmd运行,输入java -version,如果出现下图情况,说明配置成功。
三、Java语言特性
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的静态语言。
四、JDK、JRE、JVM三者之间的关系
JDK是java语言的软件开发工具包;JRE包含JVM标准实现及Java核心类库,是java运行环境,但不是一个开发环境,所以没有包含任何开发工具;JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的;JDK是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库,JRE是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序。
五、数据类型
Java八大基本类型有四种整数类型分别是byte、short、int、long,两种浮点数类型分别是float、double,一种字符类型char,一种布尔类型boolean。
六、环境变量path和classpath的作用是什么?
Path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,用于指定DOS窗口命令的路径;Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。
以上就是我为大家介绍的六种java编程入门必学六大知识点,希望能够帮助到大家。
-
单片机C语言入门-以最为流行的80C51 单片机为例来学习单片机的C 语言编程技术
2011-02-22 11:13:20前最流行开发80C51 系列单片机的软件,Keil 提供了包括C 编译器、宏汇编、连接器、库 管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境 (μVision)将这些部份组合在一起。 在学会使用... -
C#编程经验技巧宝典
2008-06-01 08:59:3358 <br>0081 文本中首字母改为大写 59 <br>0082 C#随机数的产生 59 <br>0083 身份证从15位升至18位算法 60 <br>0084 十进制数转二进制数的算法 60 <br>0085 十进制数转八进制数的算法 61... -
PHP基础教程 是一个比较有价值的PHP新手教程!
2010-04-24 18:52:44PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。... -
Linux多线程服务端编程:使用muduo C++网络库
2018-08-17 21:56:16《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。... -
Oracle Database 9i10g11g编程艺术:深入数据库体系结构(第2版)--详细书签版
2013-02-03 11:42:53除本书外,还著有广受好评的《Oracle专家高级编程》和《Oracle高效设计》。 作者: Thomas Kyte Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 7.0.9版本开始就一直任职于Oracle公司,不过,其实他从... -
Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50)--详细书签版
2013-02-06 18:24:20CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle 9i & 10g编程艺术:深入数据库体系结构(09年度畅销榜TOP50)(08年度畅销榜TOP50) 基本信息 原书名: ... -
Java零基础学习之路(四)Java数据类型
2020-11-11 10:35:42常见的八种基本数据类型都有哪些?会用八种基本数据类型声明变量?什么是二进制?原码反码补码是什么?什么是字节?byte类型取值范围?什么是字符编码方式?每种数据类型在使用时的注意事项?基本数据类型之间的转换...本章节目标:
理解数据类型的作用。Java中包括哪些数据类型?常见的八种基本数据类型都有哪些?会用八种基本数据类型声明变量?什么是二进制?原码反码补码是什么?什么是字节?byte类型取值范围?什么是字符编码方式?每种数据类型在使用时的注意事项?基本数据类型之间的转换?
知识框架:
Java的数据类型概述
几乎所有的编程语言中都会有数据类型,什么是数据类型呢?软件的存在主要是进行数据的处理,现实生活中的数据会有很多,所以编程语言对其进行了分门别类,然后不同的数据类型的数据会给其分配不同大小的空间进行存储。换句话说,java中的数据类型作用就是指导java虚拟机在程序运行阶段到底应该给该变量分配多大的内存空间。
Java中的数据类型包括两种,分别是:
● 基本数据类型
● 引用数据类型
Java中的基本数据类型又包括四类8种:
● 整数型(不带小数的数字):byte,short,int,long
● 浮点型(带小数的数字):float,double
● 字符型(文字,单个字符):char
● 布尔型(真和假):boolean
java中除了以上的8种基本数据类型之外,其它的数据类型均属于引用数据类型,也就是说字符串在java中不属于基本数据类型,而属于引用数据类型。请看八种基本数据类型对照表:
数据类型
占用bit位
取值范围
缺省默认值
byte(字节型)
1
[-128~127]
0
short(短整型)
2
[-32768~32767]
0
int(整型)
4
[-2147483648~2147483647]
0
long(长整型)
8
0L
float(单精度)
4
0.0f
double(双精度)
8
0.0
boolean(布尔型)
1
true、false
false
char(字符型)
2
[0~65535]
‘\u0000’
接下来我们普及一下计算机基本知识,计算机在任何情况下都只能识别二进制,因为计算机毕竟是一台通电的机器,电流只有正极、负极,所以只能表示两种情况,也就是1和0。什么是二进制呢?满2进一位,请看对照表
十进制
0
1
2
3
4
5
6
7
8
9
10
11
二进制
0
1
10
11
100
101
110
111
1000
1001
1010
1011
十进制和二进制之间的转换规则:
● 十进制转换成二进制:比方说十进制数65转换成二进制代码,我们可以使用短除法,65对2整除商32余数为1,把1写在旁边,接着32对2整除商16余数为0,把0写在旁边,用16整除2商0余数为0,把0写在旁边,这样进行下去直至商为0时为止。然后把余数逆序排列就得到了65的二进制代码。
● 二进制转换成十进制:比方说二进制代码为1000001的十进制数是多少呢?可以采用按权相加的方法,对于二进制代码1000001首先从右边第一位起对应2的零次方,第二位对应2的一次方,以此类推,把相应的数位与权值相乘得到的积相加即可,即2^0*1+0*2^1+0*2^2+0*2^3+0*2^4+0*2^5+1*2^6=65
接下来我们来看一下byte类型的取值范围:首先byte属于字节型,占用空间大小是1个字节byte,1个byte是8个bit位,二进制位中的一个1或者一个0就是一个bit位,而java中的数字有正负之分,二进制位中最左边的数字表示符号位,0表示正数,1表示负数,所以byte类型最大值是:01111111,将这个二进制位转换为十进制是:127。byte类型最小值是-128,也就是说1个字节可以表示256种不同形式。另外还需要给大家普及一下计算机的容量换算单位:
1byte = 8bit
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
对于以上的八种基本数据类型来说,其中七种类型byte,short,int,long,float,double,boolean计算机表示起来是很容易的,因为这七种类型底层直接就是数字,十进制的数字和二进制之间有固定的转换规则,其中boolean类型只有true和false,而true底层实际上是1,false底层实际上是0。除了以上的七种数据类型之外,还有一种类型叫做字符型char,这个对于计算机来说表示起来就不是那么容易了,因为字符毕竟是现实世界当中的文字,计算机是如何表示文字的呢?
起初的计算机实际上只支持数字的,因为计算机起初就是为了科学计算,随着计算机的发展,为了让计算机起到更大的作用,因此我们需要让计算机支持现实世界当中的文字,这个时候某个标准协会就制定了字符编码(字符集),字符编码就是一张对照表,在这个对照表上描述了某个文字与二进制之间的转换关系。
最初的时候美国标准协会制定了ASCII码,ASCII码采用1个字节编码,大家是否还记得1个字节可以表示256种不同的形式,对于美国来说这个足够了,因为英文单词就是由26个英文字母拼凑而成,大小写全部才52个,再加上标点符号也不会超过256个。ASCII码中规定’a’对应97,’b’对应98,以此类推,’A’对应65,’B’对应66,以此类推,’0’字符对应48,’1’字符对应49,以此类推,这些常见的编码还是需要大家记住的。
什么是编码?什么是解码?我们拿’a’来解释:
● ‘a’ ----(以ASCII字符集进行编码)----> 01100001
● 01100001----(以ASCII字符集进行解码)----> ‘a’
大家一定要注意:编码和解码要采用同一种字符编码方式(要采用同一个对照表),不然会出现乱码。
随着计算机的不断发展,为了让计算机支持更多国家的语言,国际标准组织又制定了ISO-8859-1字符集,又被称为latin-1,向上兼容ASCII码,仍不支持中文,主要支持西欧语言。
当计算机发展到亚洲的时候,计算机开始支持简体中文、繁体中文、日本语、朝鲜语等,其中支持简体中文的字符集包括:GB2312 < GBK < GB18030,它们的容量大小不同。支持繁体中文的大五码Big5等。
后来,国际组织制定了一种字符编码方式,叫做Unicode编码,这种编码方式统一了全球所有国家的文字,具体的实现包括:UTF-8,UTF-16,UTF-32等。
java为了国际化,为了支持所有国家的语言,所以java采用的编码方式为Unicode编码。例如’中’对应的Unicode码是’\u4e2d’。在实际开发中几乎所有的团队都会使用Unicode编码方式,因为这种方式更通用,兼容性更好。
Java字符类型
字符型char在java语言中占用2个字节,char类型的字面量必须使用半角的单引号括起来,取值范围为[0-65535],char和short都占用2个字节,但是char可以取到更大的正整数,因为char类型没有负数。java语言中的char类型变量可以容纳一个汉字。请看以下程序:
public class CharTest01 { public static void main(String[] args) { char c1 = 'a'; System.out.println(c1); System.out.println(c1 + 1); char c2 = '中'; System.out.println(c2); char c3 = "中"; System.out.println(c3); char c4 = 97; System.out.println(c4); } }
编译报错:
图4-1:编译报错
以上代码编译报错:原因是类型不兼容,使用双引号括起来的一定是字符串类型,不能赋值给char类型的变量。将错误代码注释之后并运行:
运行结果如下图所示:
图4-2:char类型测试
我来解释一下以上的输出结果:c1 + 1为什么是98呢?因为c1是char类型,1是int类型,char类型和int类型混合运算的时候char类型会自动转换成int类型,然后再做运算,a对应的ASCII码是97,所以最终结果是98。另外还有一行代码char c4 = 97,由于c4是char类型,所以会把97看做ASCII码,所以c4是’a’字符。
接下来,我们来看一看关于转义字符:\,请看以下代码:
public class CharTest02 { public static void main(String[] args) { char c1 = 't'; System.out.println("这是一个普通的字符 = " + c1); char c2 = '\t'; System.out.println("abc" + c2 + "def"); } }
编译通过了,并且运行结果如下图所示:
图4-3:\t
表面看起来’\t’是由两个字符构成,按说应该编译报错,因为它毕竟是一个字符串,最终的结果编译通过了,这还是说明’\t’是一个字符,所以\具有转义功能,根据以上输出结果可以看出\t是制表符。接下来我们来看一看其它的转义字符。
public class CharTest03 { public static void main(String[] args) { System.out.println("换行符 = hello\nworld"); System.out.println("普通的单引号 = " + '\''); System.out.println("普通的斜杠=" + '\\'); System.out.println("普通的双引号=" + "\""); System.out.println('\u4e2d'); } }
运行结果如下图所示:
图4-4:转义字符
通过以上的测试:\n表示换行符,\’表示普通的单引号字符,\\表示一个普通的\字符,\”表示一个普通的双引号字符,\u后面的十六进制是文字的Unicode编码。
Java整数类型
整数型数据在java中有三种表示方式,分别是十进制、八进制、十六进制。默认为十进制,以0开始表示八进制,以0x开始表示十六进制。
● 十进制:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...
● 八进制:0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21...
● 十六进制:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11...
在java语言当中,整数型字面量被当做int类型处理,如果想表示long类型则需要在字面量后面添加L/l,建议大写L,因为小写l和1不好区分。请看以下程序:
public class IntegerTypeTest01 { public static void main(String[] args) { //十进制 int a = 10; System.out.println("a = " + a); //八进制 int b = 010; System.out.println("b = " + b); //十六进制 int c = 0x10; System.out.println("c = " + c); } }
运行结果如下图所示:
图4-5:十、八、十六进制
接下来继续看以下代码:
public class IntegerTypeTest02 { public static void main(String[] args) { //声明一个int类型的变量a //100被默认当做int类型处理 //以下代码不存在类型转换 int a = 100; //100被默认当做int类型处理,占用4个字节 //b变量是long类型,默认可容纳8个字节 //小容量转换成大容量,叫做自动类型转换 long b = 100; //b变量long类型,占用8个字节 //c变量int类型,占用4个字节 //大容量不能直接赋值给小容量,编译报错了 //int c = b; //强制类型转换需要添加强制类型转换符 //强制类型转换时可能引起精度损失,谨慎使用 int c = (int)b; //a是int类型 //b是long类型 //c是int类型 //多种数据类型混合运算时先转换成容量最大的再做运算 //最终的结果是long类型,大容量无法直接赋值给小容量 //所以编译报错了 //int d = a + b + c; //解决以上编译错误 int d = (int)(a + b + c); System.out.println("d = " + d); //或者 long d2 = a + b + c; System.out.println("d2 = " + d2); //100L被当做long类型处理 //x变量是long类型 //不存在类型转换 long x = 100L; System.out.println("x = " + x); } }
运行结果如下图所示:
图4-6:整数型测试
通过以上代码的学习,我们知道小容量转换成大容量叫做自动类型转换,大容量转换成小容量叫做强制类型转换,强制类型转换要想编译通过必须添加强制类型转换符,虽然编译通过了,但运行阶段可能出现精度损失,谨慎使用。
接下来我们一起来看看精度损失的情况:
运行结果如下图所示:
图4-7:精度损失
4个字节的int类型300强转为1个字节的byte类型,最终的结果是44,为什么呢?首先300对应的二进制码是:00000000 00000000 00000001 00101100,强制类型转换的时候会变成1个字节,这个时候底层是将前3个字节砍掉了,也就是最后的二进制码是:00101100,这个二进制码对应的是44。
接下来我们再来看一下如果精度损失之后成为负数的情况:
public class IntegerTypeTest03 { public static void main(String[] args) { int a = 300; byte b = (byte)a; System.out.println("b = " + b); } }
运行结果如下图所示:
图4-8:精度损失
为什么以上的运行结果是-106呢?那是因为计算机在任何情况下都是采用二进制补码的形式存储数据的(至于为什么采用二进制补码形式存储数据,这里就不再赘述了,毕竟我们不是做学术研究)。
计算机二进制编码方式包括原码、反码、补码。对于正数来说原码、反码、补码是同一个。对于负数来说呢?负数的反码是在其原码的基础上, 符号位不变,其余各个位取反,例如:-15的原码是:10001111,-15反码是:11110000。负数的补码是其反码再加1。例如:-15的补码是11110000加1:11110001。换句话说-15最终在计算机上会采用11110001二进制来表示。
我们再来看看以上的程序:int a = 150。4个字节的150对应的二进制是:00000000 00000000 00000000 10010110,强转时前3个字节砍掉,最终计算机存储的二进制为:10010110,我们之前说过最终存储在计算机中的是二进制补码形式,也就是说10010110现在是二进制补码形式,我们通过补码推出原码,负数的补码是反码+1,所以10010110减1就是反码10010101,反码的符号位不变,其余位取反就能得出原码:11101010,而这个值就是-106。
接下来我们再来看一段程序,分析以下程序错在哪里,为什么以及怎么解决?
public class IntegerTypeTest05 { public static void main(String[] args) { long num = 2147483648; } }
编译报错了:
图4-9:编译错误提示信息
以上程序编译报错的原因是:java程序见到2147483648这个整数的时候,默认将其当做int类型来处理,但这个数字本身已经超出了int类型的取值范围,所以编译报错了,注意:这里编译报错的原因并不是说long类型存不下,long类型的变量完全可以存储这个数字,以上程序出现的错误是在赋值之前,还没有进行到赋值运算,数字本身已经超出int类型范围,自己崩掉了。怎么解决以上的问题呢?其实很简单,我们只要让java程序认为2147483648是一个long类型的数据就行了,也就是说在该数字后面添加L问题就解决了(long num = 2147483648L;)。
再来看一看整数类型还有没有其它的知识点要学习,请看以下程序:
public class IntegerTypeTest06 { public static void main(String[] args) { byte b = 127; short s = 32767; char c = 65535; byte b1 = 128; short s1 = 32768; char c1 = 65536; } }
编译报错了:
图4-10:编译错误提示信息
通过以上测试,大家需要记住一个结论:当一个整数型的字面量没有超出byte,short,char的取值范围,可以将该字面量直接赋值给byte,short,char类型的变量。
Java布尔类型
在Java语言中布尔类型的值只包括true和false,没有其他值,不包括1和0,布尔类型的数据在开发中主要使用在逻辑判断方面,例如:如果外面在下雨,我出门带一把雨伞。如果明天休息,咱们就一起出去玩耍吧。请看一段程序(以下程序中可能会使用控制语句,后面会详细讲,先能看个大概就行):
public class BooleanTest { public static void main(String[] args) { boolean isRain = true; if(isRain){ System.out.println("外面下雨了,出门要带一把雨伞哦!"); }else{ System.out.println("外面天气晴朗,走起吧!"); } boolean sex = true; if(sex){ System.out.println("哥们你好"); }else{ System.out.println("姐们你好"); } } }
运行结果如下图所示:
图4-11:运行结果
再看一段代码:
public class BooleanTest { public static void main(String[] args) { boolean flag = 1; } }
编译报错了:
图4-12:编译错误信息
以上错误信息提示:类型不兼容,显然boolean类型的值只有true和false,至少在java中不含有其他值。
再来看一段boolean类型的应用:
public class BooleanTest { public static void main(String[] args) { java.util.Scanner s = new java.util.Scanner(System.in); System.out.print("请输入第1个整数 : "); int a = s.nextInt(); System.out.print("请输入第2个整数 : "); int b = s.nextInt(); if(a > b){ System.out.println(a + " - " + b + " = " + (a - b)); }else{ System.out.println(b + " - " + a + " = " + (b - a)); } } }
运行结果如下图所示:
图4-13:布尔类型的使用
说明:在以上程序当中出现的System.out.print()可以输出信息但不换行,之前我们用的System.out.println()可以输出信息并换行。以上代码当中还有一段程序是专门用来接收用户键盘输入的,这段代码大家目前照抄就行,这里简单说一下:
● java.util.Scanner s = new java.util.Scanner(System.in);这行代码表示创建键盘扫描器对象,从键盘上扫描数据。
● int a = s.nextInt();执行到这行代码的时候,程序会停下来等待用户的输入。这个方法只能接收整数类型的数据。
● 另外扩展一下:String str = s.next();这行代码是专门用来接收用户输入字符串类型数据的。
Java浮点类型
浮点型数据实际上在内存中存储的时候大部分情况下都是存储了数据的近似值,为什么呢?这是因为在现实世界中存在无穷的数据,例如:3.333333333333333333..,数据是无穷的,但是内存是有限的,所以只能存储近似值,float单精度占4个字节,double双精度占8个字节,相对来说double精度要高一些。由于浮点型数据存储的是近似值,所以一般判断两个浮点型数据是否相等的操作很少。
在java语言中有这样的一条规定:只要是浮点型的字面量,例如1.0、3.14等默认会被当做double类型来处理,如果想让程序将其当做float类型来处理,需要在字面量后面添加f/F。请看以下代码:
public class DoubleTest { public static void main(String[] args) { float f = 3.0; } }
编译报错了:
图4-14:编译错误提示信息
为什么会编译报错呢?那是因为3.0默认被当做double类型来处理,占用8个字节,前面的f变量是float类型占用4个字节,大容量无法直接赋值给小容量。怎么修改呢?请看代码:
public class DoubleTest { public static void main(String[] args) { //float f = 3.0; //第一种方案 float f = 3.0F; System.out.println("f = " + f); //第二种方案 float f1 = (float)3.0; System.out.println("f1 = " + f1); } }
运行结果如下图所示:
图4-15:运行结果
以上程序的第一种方案在3.0后面添加了F,3.0F被当做float类型来处理。第二种方案是进行了强制类型转换,第二种方案可能会存在精度损失。
Java基本数据类型转换
Java基本数据类型之间是存在固定的转换规则的,现总结出以下6条规则,无论是哪个程序,将这6个规则套用进去,问题迎刃而解:
● 八种基本数据类型中,除boolean类型不能转换,剩下七种类型之间都可以进行转换;
● 如果整数型字面量没有超出byte,short,char的取值范围,可以直接将其赋值给byte,short,char类型的变量;
● 小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double
注:short和char都占用两个字节,但是char可以表示更大的正整数;
● 大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
● byte,short,char类型混合运算时,先各自转换成int类型再做运算;
● 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;
接下来,根据以上的6条规则,我们来看一下以下代码,指出哪些代码编译报错,以及怎么解决:
public class TypeConversionTest { public static void main(String[] args) { byte b1 = 1000; byte b2 = 20; short s = 1000; int c = 1000; long d = c; int e = d; int f = 10 / 3; long g = 10; int h = g / 3; long m = g / 3; byte x = (byte)g / 3; short y = (short)(g / 3); short i = 10; byte j = 5; short k = i + j; int n = i + j; char cc = 'a'; System.out.println("cc = " + cc); System.out.println((byte)cc); int o = cc + 100; System.out.println(o); } }
编译报错,错误信息如下所示:
图4-16:类型转换编译错误提示信息
如何修改,请看以下代码:
public class TypeConversionTest { public static void main(String[] args) { //1000超出byte取值范围,不能直接赋值 //byte b1 = 1000; //如果想让上面程序编译通过,可以手动强制类型转换,但程序运行时会损失精度 byte b1 = (byte)1000; //20没有超出byte取值范围,可以直接赋值 byte b2 = 20; //1000没有超出short取值范围,可以直接赋值 short s = 1000; //1000本身就是int类型,以下程序不存在类型转换 int c = 1000; //小容量赋值给大容量属于自动类型转换 long d = c; //大容量无法直接赋值给小容量 //int e = d; //加强制类型转换符 int e = (int)d; //int类型和int类型相除最后还是int类型,所以结果是3 int f = 10 / 3; long g = 10; //g是long类型,long类型和int类型最终结果是long类型,无法赋值给int类型 //int h = g / 3; //添加强制类型转换符 int h = (int)(g / 3); //long类型赋值给long类型 long m = g / 3; //g先转换成byte,byte和int运算,最后是int类型,无法直接赋值给byte //byte x = (byte)g / 3; //将以上程序的优先级修改一下 byte x = (byte)(g / 3); short y = (short)(g / 3); short i = 10; byte j = 5; //short和byte运算时先各自转换成int再做运算,结果是int类型,无法赋值给short //short k = i + j; int n = i + j; char cc = 'a'; System.out.println("cc = " + cc); //将字符型char转换成数字,'a'对应的ASCII是97 System.out.println((byte)cc); //char类型和int类型混合运算,char类型先转换成int再做运算,最终197 int o = cc + 100; System.out.println(o); } }
运行结果如下图所示:
图4-17:类型转换测试
-
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷1
2010-06-23 17:33:55本章介绍了Bjarne Stroustrup如何在C语言的基础上添加对面向对象编程的支持,来创造C++编程语言的。 讨论了过程化语言(如C语言)与面向对象语言(如C抖)之间的区别。读者将了解ANSI/ISO在制定C抖标准方 面所做的... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷2
2010-06-23 17:47:19本章介绍了Bjarne Stroustrup如何在C语言的基础上添加对面向对象编程的支持,来创造C++编程语言的。 讨论了过程化语言(如C语言)与面向对象语言(如C抖)之间的区别。读者将了解ANSI/ISO在制定C抖标准方 面所做的... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷3
2010-06-23 18:03:39本章介绍了Bjarne Stroustrup如何在C语言的基础上添加对面向对象编程的支持,来创造C++编程语言的。 讨论了过程化语言(如C语言)与面向对象语言(如C抖)之间的区别。读者将了解ANSI/ISO在制定C抖标准方 面所做的... -
C#微软培训教材(高清PDF)
2009-07-30 08:51:17编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越... -
C#微软培训资料
2014-01-22 14:10:17编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越... -
winxp系统结构5课(注册表)->1认识注册表
2007-07-05 13:11:09<br>===================================================== 名称---〉数据类型--〉描述 二进制值 REG_BINARY 原始二进制数据。大多数硬件组件信息作为二进制数据存储,以十六进制的格式显示在... -
专家门诊 Visual C++开发答疑300问 pdf书(含全部代码)
2009-11-16 22:20:23引起LNK2001的常见错误都有哪些 如何调试Windows外壳扩展程序(Shell Extension) 如何调试一个没有原码的exe文件调用的 dll 怎样设置栈的大小 如何知道GetLastError()返回的错误代码的意义 如何使用Visual C++ 6.0... -
TortoiseSVN-1.6.4.16808-cn(SVN客户端1.6.4中文版)
2011-02-14 14:55:12Subversion 使用二进制文件差异算法展现文件的区别,对于文本(人类可读)和二进制(人类不可读)文件具备一致的操作方式,两种类型的文件都压缩存放在版本库中,差异在网络上双向传递。 高效的分支和标签 分支与... -
C语言入门经典(第4版)--详细书签版
2013-02-02 17:16:50CruiseYoung提供的带有详细书签的电子书籍目录 ... C语言入门经典(第4版) 基本信息 原书名: Beginning C: From Novice to Professional, Fourth Edition ... 12.10 二进制文件的输入输出 479 12.10.1... -
C语言入门经典(第4版)--源代码及课后练习答案
2013-02-02 17:18:55Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的咨询及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在IBM工作多年,能使用多种语言进行编程(在多种机器上使用汇编语言和高级语言),设计和实现了... -
Java程序员面试宝典pdf
2013-02-21 13:06:138.1 多线程编程的基本概念 134 面试题078 什么是多线程 134 面试题079 解释进程和线程的区别 135 8.2 Java中的多线程编程 136 面试题080 如何让一个类成为线程类 136 面试题081 解释Runnable接口与Thread类的区别 ... -
计算机组成原理测试题
2011-08-05 22:53:232. 绿色计算机有哪些要求? 3.根据以下要求写出相应的8086汇编语言指令。 (1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。 (2) 用寄存器BX和S的基址变址寻址方式把存储器中的个字节与AL寄存器的内容... -
C++程序员面试宝典
2013-04-01 13:36:19面试题143 树的分类有哪些 162 面试题144 如何对树进行遍历 164 面试题145 如何对二叉树进行遍历 164 面试题146 如何计算二叉树的高度 166 面试题147 如何计算二叉树的结点数 167 13.5 图 167 面试题148 图的实现... -
21天学通C++ (中文第五版)
2010-06-23 16:57:03了解有关C++和面向对象编程的基本知识;掌握C++提供的所有全新和高级的特性;通过完成实际范例,学习如何使用C++编写高效的程序;向C++权威人士学习专家技巧。 读者可根据自己的需要阅读本书:循序渐进地逐章阅读或... -
语言程序设计课后习题答案
2012-12-27 17:02:371-2 面向对象的编程语言有哪些特点? 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作... -
antlr4权威指南
2017-09-30 10:47:22ANTLR是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。它被广泛应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。Twitter搜索使用ANTLR进行语法分析,每天... -
Quartus_II使用教程
2012-11-26 23:20:43但是为了以后学习的需要,还是得尝试学会使用更加专业的软件,比如Altera公司的Quartus 软件。 Quartus软件是Alter公司提供的FPGA/CPLD开发集成环境,Altera公司是世界上最大 的可编程逻辑器件供应商之一。Quartus... -
Visual Studio程序员箴言--详细书签版
2012-10-16 20:37:39Sara Ford 作为Visual Studio核心团队负责测试的软件设计工程师,Sara Ford分析了Visual Studio核心环境中几乎所有的功能。她从2007年开始在自己的博客上发表”Visual Studio 每日一贴”系列文章,结果大受欢迎,... -
SQL Server 2008宝典--详细书签版(第1/2部分)
2013-02-06 13:11:306.2.6 二进制字符串型 158 6.2.7 其他数据类型 159 6.2.8 用户自定义型 159 6.3 在SQL Server Management Studio中创建表 160 6.3.1 定义数据表的字段和主键 160 6.3.2 设置默认值 162 6.3.3 设置标识列 162 ... -
《计算机操作系统》期末复习指导
2009-12-30 10:57:55对考试很有帮助的.......... 《计算机操作系统》期末复习指导 第一章 计算机操作系统概述 1、操作系统的概念 操作系统(Operating System,OS),是一种软件,属于系统软件; 1、科普的观点 操作系统是...
-
6年级导引第01讲拓展篇01.mp4
-
SVL 电气设备选型及其介绍 资料大全
-
Kotlin vs Flutter,我到底应该怎么选?
-
13年苏州科技学院《高数》期末考试试卷(含答案) .pdf
-
OMRON电气设备选型资料(大全 )
-
Java多线程——使用CAS实现自旋锁
-
(06-2)列表渲染_过滤与排序
-
yum安装出错
-
2012年南京大学《数据库技术》期末考试试卷.pdf
-
清晰图解深度分析HTTPS原理
-
C语言零基础入门(详细讲解)
-
开源项目推荐:“蚂蚁呀嘿”AI社交软件
-
NFS 实现高可用(DRBD + heartbeat)
-
C# 处理PPT水印(三)—— 在PPT中添加多行(平铺)文本水印效果
-
access应用的3个开发实例
-
CMD学习笔记
-
Java 基础知识点
-
2021年 系统分析师 系列课
-
FTP 文件传输服务
-
狂神ElasticSearch.md