java基础数据类型入门Word文档格式.docx
《java基础数据类型入门Word文档格式.docx》由会员分享,可在线阅读,更多相关《java基础数据类型入门Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
•文档注释
格式:
/**注释文字*/
1:
对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
2:
对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,
生成一套以网页文件形式体现的该程序的说明文档。
后面讲解
●注释是一个程序员必须要具有的良好编程习惯。
●初学者编写程序可以养成习惯:
先写注释再写代码。
●将自己的思想通过注释先整理出来,在用代码去体现。
●因为代码仅仅是思想的一种体现形式而已。
●把HelloWorld案例加入注释写出来
●需求:
写一个程序,在控制台输出HelloWorld
●分析:
●写一个java程序,首先定义类。
●程序要想能够被jvm调用,必须定义main方法。
●程序要想有输出结果,必须用输出语句。
●实现:
●定义类用的是class关键字,后面跟的是类名
●main方法基本格式
●输出语句基本格式
●//这是我的HelloWorld案例
●//用class定义类,HelloWorld是类名
●classHelloWorld{
●/*
●这是main方法
●是程序的入口
●被jvm自动调用
●*/
●publicstaticvoidmain(String[]args){
●/*
●这是输出语句
●"
"
里面放的是在控制台上输出的内容
●*/
●System.out.println("
HelloWorld"
);
●}
●}
●解释说明程序,提高程序的阅读性
●可以帮助我们排错
后面我们会讲解更高级的排错方式
通过案例演示注释如何帮助我们排错
通过注释部分程序看效果
4常量
●常量概述
•在程序执行的过程中其值不可以发生改变
●Java中常量分类
•字面值常量
•自定义常量(面向对象部分讲)
●字符串常量用双引号括起来的内容
●整数常量所有整数
•12,23
●小数常量所有小数
•12.34,56.78
●字符常量用单引号括起来的内容
•‘a’,’A’,’0’
●布尔常量较为特有,只有true和false
●空常量null(数组部分讲解)
字符串是一个常量都可以输出,所以,我们也可以把其他的常量进行输出。
●Java针对整数常量提供了4种表现形式
•二进制
•八进制
•十进制
•十六进制
●进制概述
进制:
就是进位制,是人们规定的一种进位方法。
对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
二进制的由来:
任何数据在计算机中都是以二进制的形式存在的。
二进制早期由电信号开关演变而来。
一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。
所以就想把一大串缩短点,将二进制中的三位用一位表示。
这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。
但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,
四个二进制位最大是15,这就是十六进制。
规律,进制越大,表现形式越短。
●同进制的数据组成
•由0,1组成。
以0b开头
•由0,1,…7组成。
以0开头
•由0,1,…9组成。
整数默认是十进制的
•由0,1,…9,a,b,c,d,e,f(大小写均可)。
以0x开头
●进制转换
•其他进制到十进制
•通过十进制推出结论
•把0b100,0100,0x100转换成十进制
•十进制到其他进制
•把52分别表示成二进制,八进制,十六进制
●1:
其他进制到十进制
●系数:
就是每一位上的数据。
●基数:
X进制,基数就是X。
●权:
在右边,从0开始编号,对应位上的编号即为该位的权。
●结果:
把系数*基数的权次幂相加即可。
●2:
十进制到其他进制
●除基取余,直到商为0,余数反转。
●十进制和二进制的快速转换
•8421码
•100转成二进制
•101101转成十进制
●二进制和八进制,十六进制如何转换
•以十进制作为桥梁
•二进制到八进制3位组合
•100110
•二进制到十六进制4位组合
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。
●在这种编码方式中每一位二值代码的1都是代表一个固定数值,
●把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
●有符号数据表示法
•在计算机内,有符号数有3种表示法:
原码、反码和补码。
所有数据的运算都是采用补码进行的。
•原码
•就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
•反码
•正数的反码与其原码相同;
负数的反码是对其原码逐位取反,但符号位除外。
•补码
•正数的补码与其原码相同;
负数的补码是在其反码的末位加1。
6变量
●变量概述
•在程序执行的过程中,在某个范围内其值可以发生改变的量
•理解:
如同数学中的未知数
●变量定义格式
•数据类型变量名=初始化值;
•注意:
格式是固定的,记住格式,以不变应万变
从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。
通过画图说明一个变量的组成部分
●数据类型,变量名,变量值
为什么要定义变量呢
●用来不断的存放同一类型的常量,并可以重复使用
数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间
所谓有效数字:
具体地说,是指在分析工作中实际能够测量到的数字。
所谓能够测量到的是包括最后一位估计的,不确定的数字。
对于一个近似数,从左边第一个不是0的数字起,到精确到的位数止,所有的数字都叫做这个数的有效数字。
Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
Java语言的整型常量默认为int型,声明long型常量可以后加‘l’或‘L’,如:
inti1=600;
//正确longl1=88888888888L;
//必须加l否则会出错
与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
Java浮点类型常量有两种表示形式
十进制数形式,如:
3.14314.0
科学记数法形式,如3.14e23.14*10^2
Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:
doubled=12345.6;
//正确floatf=12.3f;
//必须加f否则会出错
char型数据用来表示通常意义上的“字符”
字符常量为用单引号括起来的单个字符,例如:
charch1='
a'
;
charch2='
中'
Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示。
注:
Unicode是全球语言统一编码
boolean类型适于逻辑运算,一般用于程序流程控制。
boolean类型数据只允许取值true或false,不可以0或非0的整数替代true和false,这点和C语言不同。
●编写案例演示每种不同数据类型的变量定义
●使用变量注意事项:
•作用域
•变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。
相同的作用域中不能定义两个同名变量。
•初始化值
•没有初始化值不能直接使用
•在一行上建议只定义一个变量
可以定义多个,但是不建议
●+是一个运算符,我们应该能够看懂,做数据的加法。
●boolean类型不能转换为其他的数据类型
●默认转换
•byte,short,char—int—long—float—double
•byte,short,char相互之间补转换,他们参与运算首先转换为int类型
●强制转换
•目标类型变量名=(目标类型)(被转换的数据);
案例演示隐式转换,并画图讲解
●byteb=10;
●inti=100;
●System.out.println(b+i);
●//有问题
●bytebb=b+i;
●System.out.println(bb);
●//没有问题
●intj=b+i;
●System.out.println(j);
刚才上面的那个例子不可以,但是,我们明明知道它就是在这个范围内,我就想赋值,肿么办呢?
●用强制转换
●目标数据类型变量名=(目标数据类型)(被转换的数据);
那么,我们到底用那种转换呢?
●一般建议,最好不要随意使用强制类型转换,容易造成数据精度的损失。
●
(1)容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;
使用时要格外注意。
●
(2)有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
●面试题
•byteb1=3,b2=4,b;
•b=b1+b2;
•b=3+4;
•哪句是编译失败的呢?
为什么呢?
●思考题
•byteb=130;
有没有问题?
如果我想让赋值正确,可以怎么做?
结果是多少呢?
练习:
byteb=300;
b=3+4,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。
如果没有可以赋值。
b=b1+b2不可以,是因为b1和b2是变量,因为变量的值会变化,不确定具体的值,所以默认使用int类型进行存储。
在这里引入ASCII码表
任何数据和字符串进行操作,结果都是字符串类型。
但是要注意运算的顺序。
数据类型中补充几个小问题
在定义Long或者Float类型变量的时候,要加L或者f。
整数默认是int类型,浮点数默认是double。
byte,short在定义的时候,他们接收的其实是一个int类型的值。
这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。
byte值的问题
byteb1=127;
byteb2=(byte)128;
//-128
byteb3=(byte)129;
//-127
byteb4=(byte)130;
//-126
byte的范围:
-128~127
128:
10000000
-128:
10000000(这里的1即是符号位,也是数值位)
3:
数据类型转换之默认转换
byte,short,char--int--long--float--double
long:
8个字节
float:
4个字节
A:
它们底层的存储结构不同。
B:
float表示的数据范围比long的范围要大
long:
2^63-1
float:
3.4*10^38>
2*10^38>
2*8^38=2*2^3^38=2*2^114>
2^63-1
4:
Java语言中的字符char可以存储一个中文汉字吗?
为什么呢?
可以。
因为java语言中的字符占用两个字节。
Java语言采用的是Unicode编码。
总结
运算符(掌握)
(1)算术运算符
A:
+,-,*,/,%,++,--
B:
+的用法
a:
加法
b:
正号
c:
字符串连接符
C:
/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:
++和--的用法
他们的作用是自增或者自减
使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:
先自增或者自减,再参与操作
inta=10;
intb=++a;
放在操作数的后面:
先参与操作,再自增或者自减
intb=a++;
(2)赋值运算符
=,+=,-=,*=,/=,%=等
=叫做赋值运算符,也是最基本的赋值运算符
intx=10;
把10赋值给int类型的变量x。
扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
shorts=1;
s=s+1;
s+=1;
请问上面的代码哪个有问题?
(3)比较运算符
==,!
=,>
>
=,<
<
=
无论运算符两端简单还是复杂最终结果是boolean类型。
千万不要把==写成了=
(4)逻辑运算符
&
|,^,!
&
||
逻辑运算符用于连接boolean类型的式子
结论
&
:
有false则false
|:
有true则true
^:
相同则false,不同则true。
情侣关系。
!
非true则false,非false则true
结果和&
是一样的,只不过有短路效果。
左边是false,右边不执行。
||:
结果和|是一样的,只不过有短路效果。
左边是true,右边不执行。
(5)位运算符(了解)
^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
面试题
请实现两个变量的交换
**采用第三方变量
**用位异或运算符
左边a,b,a
右边a^b
请用最有效率的方式计算出2乘以8的结果
2<
<
3
(6)三元运算符
格式
比较表达式?
表达式1:
表达式2;
执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
案例:
比较两个数据是否相等
获取两个数据中的最大值
获取三个数据中的最大值
键盘录入(掌握)
(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
(2)如何实现呢?
目前就记住
导包
importjava.util.Scanner;
位置:
在class的上边
创建对象
Scannersc=newScanner(System.in);
获取数据
intx=sc.nextInt();
(3)把三元运算符的案例加入键盘录入改进。
流程控制语句
(1)顺序结构从上往下,依次执行
(2)选择结构按照不同的选择,执行不同的代码
(3)循环结构做一些重复的代码
if语句(掌握)
(1)三种格式
格式1
if(比较表达式){
语句体;
}
执行流程:
判断比较表达式的值,看是true还是false
如果是true,就执行语句体
如果是false,就不执行语句体
格式2
语句体1;
}else{
语句体2;
如果是true,就执行语句体1
如果是false,就执行语句体2
格式3
if(比较表达式1){
}elseif(比较表达式2){
...
else{
语句体n+1;
判断比较表达式1的值,看是true还是false
如果是false,就继续判断比较表达式2的值,看是true还是false
如果是true,就执行语句体2
如果是false,就继续判断比较表达式3的值,看是true还是false
...
如果都不满足,就执行语句体n+1
(2)注意事项
比较表达式无论简单还是复杂,结果是boolean类型
if语句控制的语句体如果是一条语句,是可以省略大括号的;
如果是多条,不能省略。
建议:
永远不要省略。
一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
else后面如果没有if,是不会出现比较表达式的。
E:
三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
(3)案例:
比较两个数是否相等
获取两个数中的最大值
获取三个数中的最大值(if语句的嵌套)
根据成绩输出对应的等级
根据月份,输出对应的季节
F:
根据x计算对应y的值并输出
(4)三元运算符和if语句第二种格式的关系
所有的三元运算符能够实现的,if语句的第二种格式都能实现。
反之不成立。
如果if语句第二种格式控制的语句体是输出语句,就不可以。
因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。