Java基础一Word文档下载推荐.docx
《Java基础一Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java基础一Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。
所谓变量,就是值可以变化的量。
变量:
就是为了保存数据在计算机内存中申请了一块内存区域,这块区域的大小由变量的类型定
常量:
声明初始化以后这个值不会被改变
a)如何定义变量?
变量类型变量名;
格式:
inta;
b)如何为变量赋值?
变量名=变量值;
格式a=2;
//“=“表示赋值,将等号右边的值赋给了左边的变量。
Java中使用==表示相等,等价于数学中的=。
c)综合变量定义与赋值。
inta;
a=1;
可以将上面两个步骤合二为一:
变量类型变量名=变量值;
inta=1;
d)变量名的命名规则:
在Java中,变量名以下划线、字母、$符号开头,并且后跟下划线、字母、$符号以及数字。
总之,Java中的变量名不能以数字开头。
2.注释。
注释是给人看的,不是给计算机看的。
Java中共有2种类型的注释:
1)单行注释:
以//开头,//后面的所有内容均被当作注释处理。
2)多行注释:
以/*开头,以*/结束,中间的所有内容均被当作注释处理。
多行注释来源于C/C++。
(二)JAVA中的数据类型:
1.Java中的原生数据类型共有8种:
1)整型:
使用int表示。
(32位)
2)字节型:
使用byte表示。
(表示-128~127之间的256个整数,8位)。
3)短整型:
使用short表示。
(16位)
4)长整型:
使用long表示。
(64位)
5)单精度浮点型:
使用float表示(32)所谓浮点型,指的就是小数,也叫做实数,比如1.2。
6)双精度浮点型:
使用double表示(64位)。
双精度浮点型表示的数据范围要比单精度浮点型大。
7)字符型:
使用char表示(char是character的缩写)。
所谓字符,就是单个的字符表示,
比如字母a,或者中文张,外面用单引号包围上。
比如chara=‘B’;
charb=‘张’;
8)布尔类型,使用boolean表示。
布尔类型只有两种可能值,分别是true与false。
2.Java中的所有浮点类型默认情况下都是double。
所有整数默认都是int,不能将double类型的值赋给float类型的变量,即便该double类型的值处于float类型的范围内也是不可以的。
总之,能否成功赋值取决于【等号右边的值类型】与【等号左边的变量类型】是否一致。
代码:
floatf1=3.4;
//这里会报错因为你将double类型的值赋给了float类型不匹配
如何将double类型的值赋给float类型的变量?
强制类型转换,将double类型的值强制转换为float类型。
(1)强制转换的语法:
类型变量名=(类型)变量值;
代码:
floatf1=(float)3.4;
(2)使用java语言的支持,小数的后面加上f或者F;
floatf1=3.4F;
3.变量在使用前必须要赋值;
变量必须要声明类型方可使用;
变量在使用前必须要定义,
并且只能定义一次。
//编译的时候就会报错,a没有初始化(赋值)
System.out.println(a);
b=2;
//没有声明变量b的类型
System.out.println(b);
System.out.println(c);
//没有声明(定义)变量c
4.如下代码无法通过编译:
shortb=a;
a是int类型,b是short类型,int类型表示的数据范围要比short类型大,不能将表示
范围大的值赋给表示范围小的变量。
5.如下代码可以通过编译:
shorta=1;
intb=a;
a是short类型,b是int类型,int类型表示的数据范围要比short类型大,可以将表示
范围小的值赋给表示范围大的变量。
6.总结:
可以将表示范围小的值赋给表示范围大的变量;
但不能直接将表示范围大的值赋
给表示范围小的变量,只能通过强制类型转换实现。
(三)JAVA中的运算符
1.数学运算符:
+-*/%这里不做介绍需要记住下面的一些规则:
当有多个变量参与运算时,最后运算结果的类型取决于这些变量中表示范围最大的那个变量类型。
比如,参与运算的变量中,有整型int,有双精度浮点型double,有短整型short,那么
最后的结果类型就是double。
【参考代码
(1)】
代码
(1):
inta=1;
doubleb=2.0;
shorts=3;
System.out.println(a+b+s);
//程序输出的结果是double
代码
(2):
inta=1;
intb=2;
doublec=(double)a/b;
//输出的结果是double类型
//a还是int类型
上面的代码
(2)中,a与b都是整型,但是通过(double)a这种转换将a转换为一个匿名的变
量,该变量的类型是double,但是要注意:
a本身依旧是int类型,而不是double类型,
这样,(double)a/b就是double类型除以int类型,结果自然是double类型。
3.取模运算符:
使用%表示。
inta=5;
intb=3;
intc=a%b;
上面代码的运行结果是2,因为5除以3结果是1余2。
intb=-3;
被除数是5,那么取模的结果是2
代码(3):
inta=-5;
intc=a%b;
被除数是-5,那么取模的结果是-2
取模的规律:
由
(1)
(2)(3)看出,取模的结果符号永远与被除数的符号相同
2.关系运算符:
大于(>
)、小于(<
)、等于(==)、不等于(!
=)、大于等于(>
=)、小于等于(<
=),关系运算的结果是个boolean值。
3.逻辑运算符:
重点理解两个,逻辑运算符本身也返回一个boolean值。
1)逻辑与:
使用&
&
表示,逻辑与是个双目运算符(即有两个操作数的运算符),只有
当两个操作数都为真的时候,结果才为真;
其余情况结果均为假。
逻辑与表示的并
且的意思。
2)逻辑或:
使用||表示,逻辑或也是个双目运算符,只有当两个操作数都为假的时候,
结果才为假;
其余情况结果均为真。
逻辑或表示或者的意思。
4.关于逻辑运算符的短路特性。
如果第一个操作数为false,那么结果肯定就是false,所以在这种情况下,
将不会执行逻辑与后面的运算了,即发生了短路。
如果第一个操作数为true,那么结果肯定就是true,所在在这种情况下,
将不会执行逻辑或后面的运算了,即发生了短路。
5.关于变量的自增与自减运算。
1)关于intb=a++,作用是将a的值先赋给b,然后再让a自增1.
2)关于intb=++a,作用是将a的值先加1,然后再赋给b
7.条件运算符(三元表达式),其形式为:
typed=a?
b:
c;
type表示变量的具体类型可以是基本数据类型也可以是引用数据类型
具体化形式为:
intd=2<
1?
3:
4;
因为2<
1为false所以d=4;
当条件true时表达取式“:
”左边的值当条件为false时表达取式“:
”右边的值
(四)JAVA中的流程控制语句:
1.流程控制语句if的用法为:
(代码练习参考强哥视频:
听强哥说Java之Java算法大全)
第一种形式:
if(布尔表达式)如果布尔表达式的结果为true时,执行{}里面的代码结果为false不执行任何代码
{
//待执行的代码
}
inta=3;
intb=4;
if(a>
b){
System.out.println("
a大于b"
);
}
System.out.println("
没有执行if里面的代码"
第二种形式:
if(布尔表达式)-如果布尔表达式的结果为true时,执行if{…}里面的代码结果为false执行else{…..}里面的代码
}else
inta=3;
intb=4;
执行了if里面的代码"
System.out.println("
}else{
执行了else里面的代码"
a小于b"
第三种形式:
if(布尔表达式)
}elseif(布尔表达式){
}elseif(布尔表达式)
}else{
//待执行的代码
}elseif(a<
b){
等于b"
会将所有可能发生的情况依次列举出来,直到条件为true时停止判断不会再执行后面的判断
2.switch语句,使用形式为:
switch(变量)//此处的变量类型就目前所学内容来看,只能为4种类型:
byte,short,int,
char。
case常量1:
break;
case常量2:
case常量3:
default:
虽然case语句中的break是可选的,但在绝大多数情况下,如果没有break,程序的逻
辑就会发生错误,因此,通常情况下都需要加上break。
inta=10;
switch(a){
case10:
//-------①
a==10"
break;
case20:
//-------②
a==20"
case30:
//-------③
a==30"
default:
//-------④
default...."
思考一下:
1、如果省略①②③④中的break会有什么结果?
3.循环控制语句一共有3种,
分别是while,do…while以及for循环。
①while循环,形式为:
while(布尔表达式)
//计算1到100所有数字的和并输出结果
intsum=0;
//定义一个变量用于存放计算的结果
inti=1;
while(i<
=100){
sum+=i;
i++;
System.out.println(sum);
②do…while循环,形式为:
do
//待执行的代码
while(布尔表达式);
使用do..while完成计算1到100所有数字的和并输出结果
while与do…while之间的区别:
如果布尔表达式的第一次判断就为false,那么while循环一次也不执行;
do…while循环则会执行一次。
如果布尔表达式第一次判断为true,那么while循环与do…while循环等价。
③for循环(使用最多的一种循环),形式为:
for(变量初始化;
条件判断;
步进)
for循环的执行过程:
1)执行变量初始化。
2)执行条件判断。
如果条件判断结果为假,那么退出for循环,开始执行循环后面的
代码;
如果条件判断为真,执行for循环里面的代码。
3)执行步进。
4)重复步骤2
<
案列参考强哥视频做练习–Android学习必备的Java基础精讲视频课程(第一季)>
循环中break和continue的用法:
1.break语句:
经常用在循环语句中,用于跳出整个循环,执行循环后面的代码。
思考以下代码的输出结果?
?
for(inti=0;
i<
=10;
i++){
if(i==5){
break;
}
System.out.println(i);
}
2.continue语句:
经常用在循环语句中,用于跳出当前的这个循环(或者是跳出本次循环),
开始下一次循环的执行。
continue;
比较break和continue的不同?
有些时候我们还可以使用return跳出循环
return;
}
如果使用return语句会跳出当前的for循环所在的整个方法,但不建议在for循环中使用
3.break与continue可以搭配标签使用,在实际开发中,根本没有人会将break与continue
搭配标签来使用。
代码:
5;
if(i==2){
for(intj=0;
j<
j++){
if(j==2){
continue;
}
System.out.println("
j="
+j);
i="
+i);
测试以上代码的输出结果。
。
(五)数组:
1.什么是数组?
一种数据结构,可以存放多个相同类型的数据的集合,其中每一个数据被称为数组元素,可通过数组元素的索引来访问数组元素
这里需要注意一点:
数组的类型是唯一的,即数组里面只能存放相同类型的元素
2.如何定义数组?
基本格式:
type[]变量名=newtype[数组中元素的个数];
type可以是8中基本数据类型即byteshortintlongcharfloatdoubleboolean也可以是引用类型:
(这里先不说明)
可以按照下列方式定义长度为10的数组:
int[]arr=newint[10];
或者inta[]=newint[10];
通常建议使用前面的格式
3.数组中的元素索引是从0开始的。
对于数组来说,【最大的索引==数组的长度–1】。
4.数组的初始化:
a)静态初始化:
在定义数组的同时就为数组元素分配空间并赋值
int[]arr=newint[]{1,2,3};
for(inti=0;
i<
arr.length;
System.out.println(arr[i]);
b)动态初始化:
数组定义与为数组元素分配空间和赋值的操作分开进行。
int[]a=newint[3];
//定义数组,即声明一个int类型的数组a并给数组元素分配内存空间
//给数组元素赋值。
a[0]=3;
a[1]=9;
a[2]=8;
5.定义数组的第3种方式:
type[]变量名={newtype[]}{逗号分隔的初始化值列表};
静态初始化的简写Int[]a={1,2,3,4};
6.Java中的每个数组都有一个名为length的属性,表示数组的长度.数组长度一旦确定,就不能改变大小。
7.int[]a=newint[10],其中a是一个引用,它指向了生成的数组对象的首地址,数组中
每个元素都是int类型,其中仅存放数据值本身。
[参考我给的资料数组那章节,简单的理解数组的内存分布]
8.二维数组。
二维数组是一种平面的二维结构,本质上是数组的数组。
二维数组的定义方
式:
type[][]a=newtype[2][3];
【了解基本基本机构即可,不需要深入研究】
9.冒泡排序(练习)
【掌握交换排序,快速排序的原理与实现方式,掌握】
10.二分查找(BinarySearch):
待查找的数组要有序。
【作为了解,知道其原理】
11.(练习:
可选作)随机生成50个数字(整数),每个数字的范围是[10,50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它。
打印时按照数字的升序排列。