Java笔记.docx
- 文档编号:10460345
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:44
- 大小:32.30KB
Java笔记.docx
《Java笔记.docx》由会员分享,可在线阅读,更多相关《Java笔记.docx(44页珍藏版)》请在冰豆网上搜索。
Java笔记
Day01知识点:
1计算机语言:
1)机器语言:
由0,1组成(二进制),计算机底层可以直接识别并执行的语言.
2)汇编语言:
由助记符组成,比机器语言简单一些,但是难度依然很大。
3)高级语言:
a)面向过程:
C语言
b)面向对象:
Java,php,C++,C#...
总结:
机器语言是计算机底层唯一可以识别并执行的语言,其他语言编写的程序,都必须转换为机器语言才可以识别并执行。
2java的历史
1)95年,sun公司开发了java这门语言,之后的20多年,java一直占据开发语言统治地位,是最强悍编程语言,适合于中大型项目的研发。
2)2010年,Oracle(甲骨文/神谕)收购了sun公司,现在java属于Oracle公司。
3)Oracle公司是世界上最大的数据库公司,产品遍布全球。
3java开发工具---JDK:
1)编译器:
如果.java文件中没有任何的语法错误,通过编译器把.java文件转换为.class文件(.class在JVM下可以转换为二进制机械码010101)。
2)调试器:
调试编写好的代码,如果有错误的,直接提示错误原因以及出错误的代码区域,方便修改代码(代码是改出来)。
3)类库:
sun公司设计大量的工具类,用户可以通过调用这些工具来简化自己的开发。
4)Java运行环境:
包含类库和java虚拟机(JVM)
JVM:
把.class文件逐行解释为二进制的机械码01010110在底层执行。
4JDK的版本:
jdk1.5和jdk1.6是sun公司设计的最经典两个版本,jdk1.6是目前使用最为广泛的版本,而且教学中使用jdk1.6。
java的三个方向:
1)JavaSE:
java的基本应用程序的开发(学习的重点)。
2)JavaEE:
java的企业级的开发(java在服务器的开发),java使用最为广泛的部分。
java特别适合编写B/S的中大型项目:
中国人民银行系统,网银,搜狐,网易,
新疆食品安全监管系统,兵团期货交易平台...
3)JavaME:
主要应用嵌入式电子设备,现在已经完全被安卓所取代。
5使用记事本编写一个java的程序
1)新建文件必须以.java结尾(java文件)
2)publicclass名字必须跟文件名一致。
3)main方法:
程序的入口,程序都是main方法开始逐行的往下执行,一直执行到末尾为止。
publicstaticvoidmain(String[]args){
}
4)输出语句:
System.out.println("要显示的内容");
5)“;”:
java中每条语句必须以";"结尾,表示一条语句已经完成了,可以执行。
6)javacHelloWorld.java
javac.java文件全名:
编译该.java文件,把
.java-----》.class文件。
javaHelloWorld:
解释执行,把当前的
.class文件逐行进行解释执行(把.class--->010101101二进制机械码在底层执行)。
6java的运行机制:
先编译在解释执行
.java文件---->.class文件----->010101
编译解释执行
JVM
跨平台特性:
只要当前系统安装了JVM虚拟机,可以在任何环境运行java程序。
一次编写,处处可用。
缺点:
java的运行速度很慢(速度不高)。
优点:
跨平台特性,完全面向对象,简单,稳定,安全,健壮...
7java虚拟机(JVM):
1)加载.class文件:
把.class文件逐行的解释为二进制机械码然后执行。
2)管理内存:
提高程序运行的速度。
3)垃圾收集机制:
使用java编写的程序,当关闭该程序的时候,会立刻释放该程序所占据的存储空间。
8MyEclipse
1)eclipse:
日食/日蚀,IBM研发的最成功一个java开发工具,内部集成各个版本的JDK,只要安装eclipse,就不需要再安装JDK。
2)MyEclipse:
在eclipse集成web开发的各个组件,在后期的学习中,使用到MyEclipse中的Junit组件,使用MyEclipse作为开发的工具。
3)使用MyEclipse的步骤:
第1步:
创建一个工程(newProject),工程名建议字母全部小写,eg:
prj01,day01,
xjgs01,tts8...
第2步:
在该工程的src中,创建.java文件(newclass),.java文件名字的首字母最好大写(企业开发中的一种习惯),eg:
Demo1,HelloWorld,Login...
第3步:
在.java文件中编写代码。
第4步:
运行程序,runas。
9注释:
不参与程序的执行,仅仅起到一个解释说明的作用。
1)单行注释:
只能注释一行代码
//
2)多行注释:
主要针对多行代码进行注释
/*
多行注释
*/
3)文档注释:
针对某一个模块,单独编写的注释,往往在文档注释中,还会编写该程序员的名字.
/**
文档注释
*/
10包:
把.java文件放到包中。
1)包的用处:
通过包把相同模块的代码都放入到同一个包中;避免.java文件同名(把同名的.java文件放入不同的包中)。
2)包的命名规范:
com.公司名.项目名.模块名
或者
org.公司名.项目名.模块名
day02
知识点:
1变量:
内存中一块独立的存储空间,可以用来保存数值。
1)变量的两个要素:
变量名和数据类型
(int整型)
2)定义变量的格式:
数据类型变量名;
eg:
intnum1;在内存中单独开辟一个用来保存整数的存储空间(变量),用num1命名。
3)=:
赋值符号,把“=”右边的数值赋值给左边的变量。
eg:
num1=100;把100赋值给变量num1
4)一个变量只能保存一个数值,后赋值的数值覆盖之前保存的数值。
eg:
num1=200;后赋值200覆盖了之前保存100,在num1中只有一个数值200。
5)输出变量中的数值:
System.out.println(变量名);输出变量的值
eg:
System.out.println(num1);//200
案例:
Demo1
6)可以同时定义相同类型的多个变量
数据类型变量名1,变量名2,变量名3...
eg:
intnum1,num2,num3;
案例:
Demo2
7)变量的初始化:
给变量的第1次赋值,称为初始化。
可以在定义变量的同时直接给变量赋值。
eg:
inta=100;
8)使用+来连接字符串(""下要显示内容)和
变量的值
System.out.println("a="+a);
a=100
案例:
Demo3~Demo4
9)同一个作用域({})内,变量名不能重复
10)变量必须要先定义,然后才可以使用
案例:
Demo5
2标识符:
java中起名字的规范
1)变量的名字必须以字母,下划线_或者美元符号$开头,后面可以跟数字,字母,下划线_或者美元符号$。
intnum1,num_1,a$;
错误:
int1num;
2)标识符中只有两个特殊字符:
下划线_和美元符号$。
错误:
intnum¥,num&,num!
;
3)标识符中间一定不能出现空格
错误:
intnum1;
4)java中严格的区分大小写:
intS,s;S和s是两个完全不同的变量。
5)不能使用关键字命名
关键字:
也被称为保留字,sun公司在设计java语言的时候,提前对一些单词赋予特殊的功能,这些单词就是保留字/关键字,比如int,public,static...
错误:
intint;
3java中的数据类型:
基本数据类型和引用数据类型
1)基本数据类型:
4类8种
a)整型数据类型:
byte,short,int,long
b)浮点数据类型(小数):
float,double
c)布尔数据类型:
boolean
d)字符数据类型:
char
2)引用数据类型:
sun公司或者其他的程序员根据需要,为了简化开发而设计的全新的数据类型(8种基本类型之外的全部是引用数据类型)。
4整型数据类型:
1)byte:
取值范围-128~127,8位(二进制)
01111111=1+2+4+8+16+32+64
=7+24+96
=127
byte类型取值范围比较小,开发中经常用于上传下载,测试中使用极少。
2)short:
取值范围是正负3W左右,16位,取值范围小,使用不多。
(了解)
3)int:
取值范围是正负21亿左右,32位,取值范围大,企业中使用及其广泛。
4)long:
超过int取值范围的整数,都使用long类型进行保存,64位,取值最大的整型,企业中也经常使用。
5)字面量:
赋值或者算术运算的数字,就是字面量,也被称为常数,整型的字面量是int
eg:
inta=100;100就是字面量
a)如果给byte或者short类型的变量赋值,在底层会自动的把该字面量由int类型自动的转换为对应的byte或者short类型
eg:
byteb=100;100会自动的转换为byte类型,然后再给变量b赋值。
b)如果给long类型的变量赋值,如果该字面量超过了int的取值范围,必须在该字面量的末尾加上L或者l,把该字面量由当前的int类型转换为long类型。
案例:
Demo6
5浮点数据类型(小数):
float,double
1)float:
单精度,32位(虽然float占32位,但由于存储结构的不同,float的取值范围远远大于64位long类型),但有double类型的取值范围和精度均高于float,所以企业中依然是以double为主。
2)double:
双精度,64位,精度高取值范围大,企业中一般保存小数的时候,首选是double类型。
3)浮点类型字面量默认就是double类型,如果给float类型的变量赋值,必须在该字面量的末尾加上F或者f,把该字面量由double类型转换为float类型。
案例:
Demo7
6布尔数据类型:
boolean
boolean:
只有两个值true(真)或者false(假),用来保存一个判断的结果。
eg:
booleannum1=false;
booleannum2=100>1;
true
把true赋值给num2
案例:
Demo8
7字符数据类型:
char
1)char:
可以保存一个任意的字符,可以是中文,日文,韩文,印度文,字母...保存6W多字符(常用文字)
2)格式:
char变量名='单个字符';
eg:
charc1='中';
charc2='a';
charc3='1';
3)如果给char类型的变量的赋值,必须不能为空。
案例:
Demo9
4)char类型的字符,可以自动的转换为一个int类型的数字
案例:
Demo10
5)使用"+"连接多个字符,每一个字符在底层会自动转换为int类型的数字,然后执行加法运算。
案例:
Demo11
6)char使用的时候非常不方便。
8String:
sun公司设计一个引用数据类型,用来简化对字符的操作,String也被称为字符串。
1)格式:
String变量名="0个或者多个字符";
eg:
Stringstr="努力学习";
2)使用“+”来连接多个字符串.
案例:
Demo12
3)通过“+”来连接String和其它类型的数据,返回的结果也是String。
案例:
Demo13
4)String取代char,企业中对字符串的处理操作都是使用String。
9自动类型转换:
数字会自动由取值范围小的类型,向取值范围大的类型进行转换。
1)自动类型转换:
byte->short->int->long->float->double
char->int
eg:
inta=100;
doubleb=a;
首先a会进行自动类型转换,由当前的int类型
自动的转换为double类型(100--->100.0)
最后把100.0赋值给b
案例:
Demo14
2)自动类型转换,不会损失精度。
10强制类型转换:
根据需要把数据强制的转换为所需要的数据类型。
1)格式:
(要转换的数据类型)数据
eg:
doublenum1=10.99999;
intnum2=(int)num1;
num2的值是10
2)如果浮点类型的小数强制的转换为整数,则舍弃小数点后所有的数字。
3)强制类型转换经常容易损失精度。
案例:
Demo15
11算术运算符:
+,-,*(乘号),/(除号),%(求余数)
1)只有相同类型的数字,才可以进行算术运算(经常使用自动类型转换和强制类型转换,把运算符两端的数字,转换相同类型的数据)
案例:
Demo16
Day03
知识点:
1算术运算符:
案例:
Demo1
1)算术运算的结果跟参与运算的数据的类型保持一致。
案例:
Demo2
2)%:
求出余数
被除数=商*除数+余数
余数=被除数-商*除数
eg:
intnum1=10,num2=3;
intresult1=num1/num2;//3
intresult2=num1%num2;//1
案例:
Demo3
a)负数的余数还是负数(整除例外)
eg:
intnum1=-10,num2=-3;
intresult=num1%num2;
余数=被除数-商*除数
=-10-(-3)*3
=-10-(-9)
=-10+9
=-1
案例:
Demo4
b)浮点数的余数依然是浮点数(整除例外)
案例:
Demo5
2自增运算符:
++
1)表达式的值
eg:
intnum=100;
变量num的值是100
num+1表达式的值是101
2)前置自增:
++i:
首先i先加1(i=i+1),然后把i加完以后的值作为++i整个表达式的值。
eg:
intnum1=100;
intresult=++num1;
分析:
首先num1=num1+1(101),然后把num1当前的值(101)作为++num1整个表达式的值,最后把++num1表达式的值赋值给
result
案例:
Demo6~Demo7
3)后置自增:
i++:
首先把i当前的值作为i++整个表达式的值,然后i=i+1
eg:
intnum=100;
intresult=num++;
分析:
首先把num当前的值(100)作为num++整个表达式的值(100),然后
num=num+1(101),最后把num++整个表达式的值赋值给result
案例:
Demo8
3自减运算:
--
1)前置自减:
--i:
首先i=i-1,把i减完以后的值作为--i整个表达式值
eg:
intnum=10;
intresult=--num;
分析:
首先num=num-1(9),把num当前的值作为--num整个表达式的值(9),最后把
--num表达式的值赋值给result
案例:
Demo11~Demo12
2)后置自减
i--:
首先把i当前的值作为i--整个表达式的值,然后i=i-1
eg:
intnum=100;
intresult=num--;
分析:
首先把num当前的值(100)作为
num--整个表达式的值,然后num=num-1(99),最后把num--整个表达式的值赋值给result(100)
案例:
Demo13~Demo15
3)总结:
无论是前置的自增还是后置的自增,变量的值都会加1,只是表达式的值不同。
无论是前置的自减还是后置的自减,变量的值都会减1,只是表达式的值不同。
4关系表达式:
1)关系运算符:
>,>=(大于或者等于),<,
<=(小于或者等于),==(等号),!
=(不等号)
2)关系表达式:
使用关系运算符连接的表达式,就是关系表达式。
关系表达式的结果必然是一个boolean类型,要么为true,要么为false。
eg:
intnum1=100,num2=200;
booleanresult=num1>=num2;
false
案例:
Demo16
3)运算符的优先级:
算术运算符>关系运算符>赋值运算符
eg:
intnum1=100,num2=200,num3=1000;
booleanresult=
(num1+num2)*3>=num3
算术:
300*3>=num3
900>=num3
关系:
false
赋值:
把false赋值给result
案例:
Demo17
5Scanner:
如何使用java中的工具类,Scanner是由sun公司设计的一个工具类,可以通过Scanner从控制台输入任意的一个数字。
使用Scanner步骤
1)导入Scanner工具类
import包名.类名;
importjava.util.Scanner;
2)根据Scanner工具类创建该类的对象(暂时先照我的写,下周详细进行解释)
Scannersc=newScanner(System.in);
3)从控制台输入数字:
sc.nextInt();
案例:
Demo19~Demo21
6逻辑运算符:
&&(逻辑与),||(逻辑或),!
(逻辑非)
1)&&:
逻辑与,表示并且的含义,用来连接多个关系表达式,只有当所有的关系表达式都为true,则整个表达式为true,反之只要有任意一个表达式为false,则整个表达式为false。
eg:
intnum1=100,num2=1000;
booleanresult=
num1>=100&&num2<100
truefalse
false
2)运算符的优先级:
算术运算符>关系运算符>逻辑运算符>
赋值运算符
eg:
intnum1=100,num2=200,num3=1000;
booleanresult=
num1+num2>=300&&num1*num2>num3;
算术:
300>=300&&20000>1000
关系:
true&&true
逻辑:
true
赋值:
把true赋值给result
案例:
Demo22
Day04
知识点:
1逻辑运算符:
案例:
Demo1
1)||:
逻辑或,用来连接多个或者关系的关系表达式,只要有一个表达式为true,则整个表达式都为true,反之只有当所有的关系表达式都为false,则整个表达式为false。
eg:
intnum1=100,num2=200;
booleanresult=
num1>=1000||num2<500;
falsetrue
true
案例:
Demo2
案例:
判断闰年
闰年:
该年份能被4整除并且不能被100整除,或者能被400整除
1)能被4整除并且不能被100整除
year%4==0&&year%100!
=0
2)能被400整除
year%400==0
3)或者
(year%4==0&&year%100!
=0)
||year%400==0
案例:
Demo3,在main方法中,从控制台输入任意的一个整数作为年份,判断该年份是否为闰年,如果是闰年,输出true,反之如果不是闰年,输出false
2)!
:
逻辑非(表示取反)
eg:
booleanresult1=true;
!
result1---->false
booleanresult2=!
(100!
=100)
!
(false)
true
案例:
Demo4
2复合赋值运算符:
+=,-=,*=,/=,%=
(了解)
eg:
intnum1=100;
num1+=100;//num1=num1+100
num1-=100;//num1=num1-100
intnum2=200;
num1*=num2+100;
//num1=num1*(num2+100)
num1/=num2-100;
//num1=num1/(num2-100)
num1%=num1+num2;
//num1=num1%(num1+num2)
案例:
Demo5
3条件运算符(三目运算符):
1)格式:
表达式1?
表达式2:
表达式3
2)语法规则:
如果表达式1为true,整个表达式的结果就是表达式2;反之如果表达式1为false,则整个表达式的结果就是表达式3.
eg:
intnum1=100,num2=200;
intmax=
num1>=num2?
num1:
num2;
案例:
Demo6~Demo7
4Java中语句的结构:
1)顺序结构:
代码从上往下逐行的执行(每一行代码都会被执行到)。
2)选择结构:
程序会根据条件选择性的执行,有的代码会被执行,有的代码不会被执行。
3)循环结构:
一段代码会被反复的执行。
5if语句:
1)格式:
if(表达式){
语句
}
2)语法规则:
如果if中的表达式为true,执行if中的语句;反之如果if中的表达式为false,则不执行任何语句。
eg:
intage=2;
if(age>=18){
System.out.println("长大了!
");
}
3)注意:
a)if中表达式()跟语句{}之间不要出现";"
b)if中语句最好都放在{}中。
案例:
Demo8~Demo10
6if-else语句
1)格式:
if(表达式){
语句1
}else{
语句2
}
2)语法规则:
如果if中表达式为true,执行if中的语句1;反之如果if中表达式为false,则执行else中语句2。
eg:
intage=2;
if(age>=18){
System.out.println("成年了");
}else{//age<18
System.out.println("你还小!
!
!
");
}
3)注意在else中不要加入任何条件,因为else本身就是if的相反条件。
案例:
Demo11~Demo13
7if-else-if(多分支选择语句)
1)格式:
if(表达式1){
语句1
}elseif(表达式2){
语句2
}elseif(表达式3){
语句3
}...
else{
语句n
}
2)语法规则:
只要表达式为true,执行对应的分支语句。
案例:
Demo14
Day05
1案例:
使用if-else,在main方法中从控制台输入任意的两个整数,输出其中较大的整数的值。
2while循环:
1)格式:
while(表达式){
循环体语句
}
2)语法规则:
首先判断表达式,如果表达式为true,执行循环体语句一次,然后再来判断表达式,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)