java笔记.docx
《java笔记.docx》由会员分享,可在线阅读,更多相关《java笔记.docx(84页珍藏版)》请在冰豆网上搜索。
![java笔记.docx](https://file1.bdocx.com/fileroot1/2023-2/1/59b55567-4019-4b35-9a17-c7b6b45e770d/59b55567-4019-4b35-9a17-c7b6b45e770d1.gif)
java笔记
班规
1、手机静音、上课不许玩手机
2、讲课时间不许敲代码
3、迟到、早退、随意走动
4、在教室不许吃东西,特别是肉包子,韭菜
5、作业抽查
惩罚
1、发10块红包
2、唱歌
3、罚站一节课
接收文件
应用程序---------互联网------gftp,点击gftp
1、java基础知识
1.1计算机编程语言的发展史
第一代计算机语言:
机器语言(01110111011110111000)----少数人手里
低级语言--------电脑识别
第二代计算机语言:
汇编语言—在机器语言的基础上加入了字母和单词
第三代计算机语言:
面向过程:
C语言……
面向对象:
C++,C#,java……..---------
if….else…(如果。
。
。
。
。
那么。
。
。
。
)------高级语言------人能识别的语言
第四代计算机语言:
sql语言
高级语言如何让计算机识别?
高级语言------------》低级语言
通过编译转换
1.2java简介
java是sun公司开发的,是一门面向对象的,可以跨平台的,代码安全的开源计算机编程语言
java的鼻祖:
詹姆斯。
高斯林
1.3java能干什么
javase(j2se0):
java标准版,基于C(Client客户端)/S(Server服务器)架构
做一些类似于扫雷,QQ…..性质的桌面应用程序----Eclipse,MyEclipse
javaee(j2ee):
java企业版,基于B(Browser浏览器)/S(Server服务器)架构
做一些如淘宝、京东、腾讯……等互联网应用程序开发
javame(j2me):
java移动端
1.4配置环境
什么是环境?
在windows输入框中输入calc+enter,此时会弹出一个计算器,为什么?
找计算器的运行文件
C:
\Windows\System32
发现:
计算器的运行文件已经在环境中配置,所以可以通过以上操作启动计算器
java中的环境指的是
选中计算机右击-----属性----高级系统设置----环境变量----在系统变量中找到一个路径path
E:
\oracle\product\10.2.0\db_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:
\ProgramFiles(x86)\MySQL\MySQLServer5.5\bin;C:
\ProgramFiles(x86)\Java\jdk1.7.0_80\bin;C:
\ProgramFiles\VisualSVNServer\bin
java环境配置
1、安装jdk
2、安装完成之后找到jdk安装目录下的bin文件路径
C:
\ProgramFiles(x86)\Java\jdk1.7.0_80\bin
将路径拷贝到path下,注意路径与路径之间用“;”分割
环境变量配置成功的标志是:
在dos窗口输入javac+enter,出现如下界面表示成功
jdk:
java开发工具包---包含jre和类库
jre:
java运行环境
jvm:
java虚拟机
java.exe:
运行java代码
javac.exe:
编译java代码
1.5编写第一个java代码
第一步:
在任意盘符下新建一个txt文档,将文件名改为Hello.java
第二步:
在文档中编写如下代码
publicclassHello{
publicstaticvoidmain(String[]args){
System.out.println(“HelloWorld”);
}
}
第三步:
编译文件
打开dos窗口----进入e盘------利用javac.exe编译文件
windows系统:
e:
+enter----进入e盘
dir+enter----显示该盘所有文件
在dos窗口输入javacHello.java
此时在e盘下多出一个Hello.class的文件------编译后的文件
第四步:
运行文件
在dos窗口输入javaHello
学生端
应用程序-----附件------终端
在终端中输入ls,就可以显示所有文件
练习:
在终端打印一句话:
好看的皮囊千篇一律,有趣的灵魂百里挑一
面试题:
java为什么可以一次编写,处处运行
java拥有跨平台的特性,利用jvm(java虚拟机)将代码展示在不同的系统中
1.6使用java开发工具
EclipseMyEclipse…….
学生端MyEclipse
应用程序-----编程----myeclipse8.6
左边:
项目区packageexplorer:
所有的项目都在该区域创建
右上半部分:
代码区:
所有编写的代码都在该区域展示
右下半部分:
控制台console:
代码运行的结果都在该区域展示
新建第一个java项目
方式一:
在项目区右击鼠标------new-----javaproject
方式二:
在MyEclipse左上角选择file-------new------javaproject
在java中代码都是写在类中,类是组成java最小元素
新建一个类class
选中src右击-------new--------class
在MyEclipse左上角选择file-------new-----class
在代码区编写代码
访问修饰符:
publicprotectedprivate默认的(不写)
类名:
命名规范
1、由字母、数字、_、$组成,数字不能开头
2、首字母大写,遵循驼峰式命名(XxxxXxxxxXxx)
3、见名知意Test01Demo01
主函数:
用于执行(运行)代码的入口
运行
在代码区右击------runas-----javaapplication
方式二:
在菜单栏找到
图标,点击运行
项目的导入导出
导出:
方式一:
选中项目右击------export-----
方式二:
选中项目右击-----MYeclipse-----openinexplorer----返回上一层直接拷贝项目
项目导入:
在项目区右击------import----General----exitingprojectintoworkspace----选择需要导入的项目
workSpace:
工作空间------用于存储MyEclipse中创建的项目及代码
连接svn
学生端:
window-----showview----other----在输入框中输入svn
找到
图标点击,在输入框中输入http:
//10.0.1.98/svn/njwb-----next
用户名:
stu密码:
stu
此时在控制台出现如下界面
在项目区右击-----import-----输入svn,选择从svn中检出------选择已有资源----选择项目-----finish
项目更新
选中项目右击------team-----更新
重置界面
window-------resetperspective----ok
MyEclipse快捷键
ctrl+D:
删除一整行
alt+上下键:
移动任意一行
main+alt+/+enter:
生成主函数
syso+alt+/:
生成输出语句
alt+/:
联想法
2、java初识
2.1项目需求
网博超市管理系统
2.2输出语句
System.out.println()
1、输出语句中,双引号中的内容都是原样输出
2、Myeclipse中所有的符号都是英文状态下的
3、print:
表示不换行
println:
表示换行
2.3转义字符
\n:
表示换行
\t:
表示一个tab键
\s:
表示一个空格
\\:
表示一个\
\”:
表示一个双引号
2.4注释
注释分类
单行注释:
//注释内容
单行注释可以独占一行,也可以跟在代码后
多行注释:
/*注释内容*/
文本(文档)注释:
/**注释内容*/
用于生成文档的
注释的使用范围
对于单行和多行注释,一般用于修饰代码,多数情况下用于函数(方法)内部
对于文本注释,一般用于修饰类或者函数(方法)
文本注释生成文档
选中项目右击-----explorer-----在输入框中输入javadoc
解决谷歌打开乱码问题
在右上角有三条横线的图标点击------开发者工具----编码----Unicode(uft-8)
注释不仅可以解释代码的含义,还可以注释代码,使代码不运行
快捷注释
多行注释:
同时按住ctrl+shift,然后按下/:
表示注释代码
按下\:
表示取消注释
2.5包
包的作用:
1、用于分类
2、用于区别同名文件
如何建包?
com.公司名.项目名.模块名
com.njwangbo.day01
com.njwangbo.shoppingmall.regist
方式一:
选中src--------new-------package---输入包名
方式二:
在新建类的同时,指定包名
对于系统的第二个界面,要求值是活的,现阶段写的都是死值,不符合要求
如何解决?
------变量
2.6变量
什么是变量?
计算机存储数据的方式?
内存:
内存存储数据是瞬时存储
硬盘:
硬盘存数据是永久存储
内存如何存储数据?
宾馆---------------------------存人
开一个房间--------------------开辟一块空间
单人间、大床房
、标间、总统套房------------房间的类型
303、巴黎间(别名)--------------------房间地址
入住---------------------------------存人
内存---------------------------存数据
开辟一块空间----------------变量
定义数据类型----------------变量类型
给数据取别名----------------变量名
赋值----------------------------变量值
变量的定义:
内存中一块存储空间的表示
变量的三要素:
变量名、变量类型、变量值
2.7数据类型
两大类:
八大基本数据类型和引用数据类型
8大基本数据类型
整型:
-----默认值0
byte:
1个字节
short:
2个字节
int:
4个字节
long:
8个字节
浮点型:
-----默认值0.0
float:
4个字节
double:
8个字节
字符型:
-----\u0000
字符型只能存储单个字符,并且用单引号包裹
char2个字节
布尔类型:
----false
boolean:
1位---1个字节
引用数据类型
String数组枚举接口类…….
2.8变量声明与赋值
需求:
定义一个姓名张三,并在控制台打印
方式一:
先声明变量,在给变量赋值
方式二:
声明的同时给变量赋值
变量命名规范
1、由字母、数字、_、$组成,数字不能开头
2、变量命名遵循驼峰式命名(xxxxXxxxxXxxXxx)
一个单词,全部小写,多个单词,从第二个单词开始首字母大写
3、见名知意
4、不能是关键字
注意:
可以声明一个变量,如果需要使用该变量,一定要初始化该变量,否则会报错
需求:
声明一个float类型的变量,并赋值10.0;
发现报错,为什么?
原因:
在java中浮点型默认是double类型
解决办法
方式一:
在10.0后加一个f
方式二:
数据类型转换
自动转换:
小的数据类型可以直接转换成大的数据类型
byte类型的数加上short类型的数最终需要用int类型接收,因为整型默认类型位int
强制转换:
大的数据类型需要强制转换成小的数据类型
语法:
小的数据类型变量名=(小的数据类型)大的数据类型
app界面2
2.9键盘输入
需求;在控制台键盘输入一个姓名,然后在控制台打印
第一步:
创建Scanner对象
对象创建完成发现报错,原因是没有导入jar包
解决办法-----导入jar包
方式一:
将鼠标放置在Scanner单词上,会出现一个小框,
选择inportScanner(java.util)
方式二:
直接输入importjava.util.Scanner;
方式三:
联想法
第二步:
接收键盘输入的数据:
对象名点取法获得
input.nextInt():
用于接收整型数据
input.next():
用于接收String类型数据
input.nextDouble():
用于接收浮点类型数据
练习:
键盘输入两个数,打印出两个数的和
键盘输入三个数,求平均数
键盘输入两个男生身高和两个女生身高,计算男生平均身高比女生平均身高高多少
2.10运算符
算数运算符(+-*/%)
/:
取整
%:
取余
需求:
键盘输入一个四位整数,输出各位之和(如输入1234输出10)
如果/或者%两边都是整型,那么结果为整型
如果两边有一边为浮点型,那么结果为精确值
+:
面试题:
2+2+“2”+2的结果为
a、2222b、422c、224d、242
对于+,如果+两边都是数值,那么+表示算数运算符
如果+两边有一边是字符串,那么+表示连接符
关系运算符
<><=>=!
=
关系运算符返回一个boolean类型的值
逻辑运算符
与、或、非
与两边表达式都为true,那么结果为true,有一边为false,那么结果为false
&&:
短路与
如果与前面一个表达式结果为false,那么后面的表达式不执行
&:
非短路与
无论与前面一个表达式结果是否为false,后面的表达式都会执行
或两边表达式都为false,那么结果为false,有一边为true,那么结果为true
||:
短路或
如果或前面一个表达式结果为true,那么后面的表达式不执行
|:
非短路或
无论或前面一个表达式结果是否为true,后面的表达式都会执行
!
非:
表示取反
^:
异或
相同为0
不同为1
需求:
定义两个变量a=10,b=7,要求用代码交换两个变量的值
/**
*定义两个变量a=10,b=7,要求用代码交换两个变量的值
*@authorAdministrator
*
*/
publicclassDemo03{
publicstaticvoidmain(String[]args){
/*inta=10;//00001010
intb=7;//00000111*/
//方式一
/*inttemp;
temp=a;
a=b;
b=temp;
System.out.println(a+"\t"+b);*/
//方式二:
利用运算符
/*a=a+b;//17
b=a-b;//10
a=a-b;
System.out.println(a+"\t"+b);*/
//方式三:
异或
inta=10;//00001010
intb=7;//00000111
intc=a^b;//00001101
b=b^c;//00001010-----10
a=b^c;//00000111-----7
System.out.println(a+"\t"+b);
}
}
三目运算符(三元运算符)
语法:
表达式?
值1:
值2(if….else…)
表达式一般返回boolean类型的值,如果值为true,取值1,否则取值2
需求:
键盘输入两个四位数,比较两个数百位的大小,并输出百位大的四位数
publicclassDemo05{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("请输入第一个数");
intfirstNumber=input.nextInt();
System.out.println("请输入第二个数");
intsecondNumber=input.nextInt();
System.out.println((firstNumber/100%10)>(secondNumber/100%10)?
firstNumber:
secondNumber);
}
}
练习:
商场活动,输入五位会员卡号,如果会员卡号的数字之和大于20且第三位数字为6,那么就是幸运用户,否则很遗憾
2.11选择结构
if选择
单个if
语法:
if(boolean类型的表达式){
表达式值为true时执行的代码
}
小明考试,如果及格,搞一局王者荣耀
if语句后的{}可以省略,如果省略,只有()后的第一行代码输入if
总结:
if语句后的{}一般不省略
if……else….语句
语法:
if(boolean类型的表达式){
表达式值为true时执行的代码
}else{
表达式值为false时执行的代码
}
小明考试,如果及格,搞一局王者荣耀,否则告诉他游戏毁人生
需求:
小明考试,如果语文和数学成绩中一门成绩为100且另一门大于95,就可以撸一把,否则提示小撸怡情,大撸伤身,强撸灰飞烟灭
需求:
模拟彩票系统,随机生成两个数,如果猜的数与产生的数相同,就中奖,否则没中奖
分析:
if…..else….
随机数?
随机数:
Math.Random()-----产生一个0到1之间的随机数
规律:
产生一个[min,max)之间的随机数
Math.Random()*(max-min)+min
模拟登录系统
输入用户名和密码,如果正确,登录成功,否则登录失败
此种写法发现,即使用户名填写正确也登录不成功
为什么?
面试题:
简述==与equals的区别
String属于引用数据类型,真实值存在堆内存中,在栈内存中只存放了一个地址,而基本数据类型真实值存在栈
所以基本数据类型可以使用==判断是否相等
而引用数据类型不可以使用==判断,需要用equals判断
多重if
if(boolean类型的表达式){
表达式值为true时执行的代码
}elseif(boolean类型的表达式){
表达式值为true时执行的代码
}….else{
表达式值为false时执行的代码
}
需求:
年薪低于10万,BMW(bus/bikemetrowalk)
年薪25万,买一辆迈瑞宝-----雪弗兰
年薪50万,买一辆福特野马、Z4
年薪100万,买法拉利
publicclassTestIf06{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("请输入年薪");
doublemoney=input.nextDouble();
if(money<10){
System.out.println("BMW(bus/bikemetrowalk)");
}elseif(money>=10&&money<25){
System.out.println("买一辆迈瑞宝-----雪弗兰");
}elseif(money>=25&&money<50){
System.out.println("买一辆福特野马、Z4");
}elseif(money>50&&money<100){
System.out.println("买奥迪A6");
}else{
System.out.println("买法拉利");
}
}
}
分析:
上面写的代码,输入的年薪可能出现负数,不符合常规
如何解决?
-------------嵌套if
if语句里面嵌套if
publicclassTestIf06{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("请输入年薪");
doublemoney=input.nextDouble();
if(money>0){
if(money<10){
System.out.println("BMW(bus/bikemetrowalk)");
}elseif(money>=10&&money<25){
System.out.println("买一辆迈瑞宝-----雪弗兰");
}elseif(money>=25&&money<50){
System.out.println("买一辆福特野马、Z4");
}elseif(money>50&&money<100){
System.out.println("买奥迪A6");
}else{
System.out.println("买法拉利");
}
}else{
System.out.println("吊,你要倒霉了");
}
}
}
需求:
输入月份,输出季节
春季:
3、4、5
夏季:
6、7、8
秋季:
9、10、11
冬季:
12、1、2
publicclassTestIf07{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("请输入月份");
intmonth=input.nextInt();
if(!
(month<1||month>12)){
if(month==3||month==4||month==5){
System.out.println("春季");
}elseif(month==6||month==7||month==8){
System.out.println("夏季");
}elseif(month==9||month==10||month==11){
System.out.println("秋季");
}else{
System.out.println("冬季");
}
}else{
System.out.