基础java课堂笔记.docx
《基础java课堂笔记.docx》由会员分享,可在线阅读,更多相关《基础java课堂笔记.docx(25页珍藏版)》请在冰豆网上搜索。
![基础java课堂笔记.docx](https://file1.bdocx.com/fileroot1/2023-1/24/eea65370-6e21-4c17-bce8-4ab82580b42e/eea65370-6e21-4c17-bce8-4ab82580b42e1.gif)
基础java课堂笔记
Java语言基础Day01
2011/7/29
====================
1.Linux简介
1)文件系统
2)当前工作目录,就是当前正在使用的默认文件夹
文件夹=目录
pwd打印(显示)当前工作目录
3)用户主目录(userhome),是属于当前登录用户个人的目录
个人主目录,用户拥有对自己用户主目录全部管理权限.
4)mkdir创建文件夹
mkdirdemo在当前文件夹(工作目录)里创建文件夹demo
5)cd切换(更改)当前工作目录
..代表上层目录,cd..切换到上层目录
.代表当前目录
cd指定的目录
cd/到跟目录
cd/home/liucs到主目录
cd命令默认返回用户主目录(userhome)
6)ls显示文件夹内容
7)绝对路径和相对路径
A以跟(root)"/"为开始的路径是绝对路径
B不是以"/"开始的是相对路径,相对路径默认相对于当前目录
8)rm-rfdir删除目录
9)启动eclipse
cd/opt/eclipse
./eclipse
2.Java简介
1)java特点:
简单,面向对象,跨平台,安全,多线程支持
2)java的跨平台
Java通过JVM实现了跨平台技术
Java源代码(*.java)经过Java的编译器编译成
Java字节码(*.class),执行Java字节码,Java字节码
经过JVM的解释为具体平台的具体指令,并执行。
不同平台有不同的JVM,主流平台都提供了JVM。
所以
JAVA字节码可以在所有平台上能够解释执行。
在这个
意义上Java是跨平台的。
也就是说:
Java的字节码
是跨平台的。
3)JavaJDK
JDKjava开发工具包/opt/jdkor/opt/jdk_1.6.01
|--bin开发工具(命令:
java,javac,jar,javad,jar,rmic,jps...)
|--jreJREJava运行环境
|--lib(rt.jar)JavaAPI(应用编程接口,系统类库)
|(java提供的现成组件)
|--bin(java_vm)JVMJava虚拟机
3.JavaAPP
1)HelloWorld.java
packagebasic.day01;
/**
*eclispe自动将当前文件编译到:
*workspace/JSD1105/bin/basic/day01/HelloWorld.class
*(工作空间/项目/bin/包文件夹/类文件)
*执行时候,执行这个类文件.
*@authorteacher
*/
publicclassHelloWorld{
//java软件的入口方法
publicstaticvoidmain(String[]args){
//在控制台输出“HelloWorld!
”
System.out.println("HelloWorld!
");
}
}
2)Java的编译
project
|--src
||--basic.day01
|||--HelloWorld.java
||--basic.day02
|||--JFrameHelloWorld.java
|--bin
||--basic.day01
|||--HelloWorld.class
||--basic.day02
|||--JFrameHelloWorld.class
4.Java的注释,被Javac(编译器)忽略的部分
1单行注释//...
2多行注释/**/
3文档注释/***/
5.Eclipse(日食/月食)
1)来自IBM开源,有eclipse.org基金会维护开发
是主流的Java开发平台,可以开发:
PHP,Ruby,Android
SUN对这个软件很有意见.
eclispe是Java开发的,需要JDK来运行
2)eclipse.org下载
3)JDK:
预习:
java变量类型,运算符等
Java语言基础Day02
2011/8/1
====================
1.Java变量
1)变量就是自然语言中的代词
Personhe;intage=15;
//age=00000000000000000000000000001111
System.out.println(age);//15
2)Java中的变量,Java是强类型语言,
A变量必须声明,并且初始化以后使用
B变量必须有明确的类型
C变量不能重复定义
3)变量的作用域
a在声明的地方开始,到块结束为止
b离开变量的作用域结束,变量将回收。
2.进制转换基础
1)十进制
逢10进1
基数:
10
权:
10^n,100001000100101
23678(10)=2*10000+3*1000+6*100+7*10+8*1
=2*10^4+3*10^3+6*10^2+7*10^1+8*10^0
=23679
2)二进制
逢2进1
基数:
2
权:
2^n,1286432168421
01000001
(2)=1*64+1*1
=65(10)
3)补码基础
-1281000000011111111111111111111111110000000
102进制......
84211111011111111111111111111111111111110111
-810001111100011111111111111111111111111111000
-7100111111001
-6101011111010
-5101111111011
-4110011111100
-3110111111101
-2111011111110
-1111111111111
0000000000000
1000100000001
2001000000010
3001100000011
4010000000100
5010100000101
6011000000110
7011100000111
0000100000000000000000000000000000001000
.......
1270111111100000000000000000000000001111111
补码运算:
-11111
-11111
*
----------
1111
1111
1111
1111
101010
-----------
0001
4)AJava内部只有二进制补码
BJava内部采用补码运算,自动发送上溢出和下溢出
CJava内部没有10进制!
但是Java尽量按照人类习惯输入输出
D补码的负数最高位是1,也称作符号位
5)16进制,是2进制的简写,方便专业人员书写2进制数据
16进制
逢16进1
基数:
16
权:
16^n,256161
16进制数字:
0123456789abcdef
0123456789101112131415
41(16)=4*16+1*1
=65(10)
=01000001
(2)
84218421
41(16)
1286432168421
01000001
练习:
转换以下十进制为二进制192(10)137(10)145(10)
192(10)=11000000
(2)
c0(16)
-8(10)=fffffff8(16)
3.Java数据类型:
分为引用类型和基本数据类型
1)基本数据类型:
8种
byte,short,int,long
float,double
char
boolean
2)整数类型byte,short,int,long,都是有符号(补码)整数
byte8位补码最大值0x7f127最小值0x80-128
short16位有符号数0x7fff327670x8000-32768
int32位0x7fffffff2G-12^31-121亿0x80000000-2G
long64位....
整数字面量(直接量)默认是int类型,如果不超出范围,可以给小类型直接赋值.
使用整数类型(byte,short,int)要注意取值范围,超范围运算
java底层byte,short按照32位计算;
long类型的字面量使用"L","l"后缀
3)浮点数,小数(不必掌握浮点数的存储方式)
浮点数原理:
10进制浮点数(科学计数法)原理
2356189.=2.356189*10^6
概念:
尾数:
2.356189
指数:
6
基数:
10
pi=3.14
3.1415926535897932384626433
二进制浮点数:
101001010101.=1.01001010101*2^1011
概念:
尾数.010********
指数:
1011
基数:
2
float:
32位其中:
1位符号位,8位指数,23位尾数
精度:
23位
intmax=01111111111111111111111111111111
floatf=1.11111111111111111111111*2^00011110
double:
64位其中:
1位符号位,11位指数,52位尾数
浮点数的字面量:
默认是double,Dd后缀是double,fF是float
4)字符类型char,字符是一个16位无符号整数,是一个二进制数数值是一个字符的unicode编码值.
unicode编码:
是全球范围内的编码方法,编制了英文,中,日,韩,阿拉伯,希伯来,.....8万+字符.其中英文部分与ASCII兼容,英文字符和数字是连续编码的.
ASCII:
0~128
Javachar的范围0~65535不能表示全部unicode但是可以表示unicode只能够最常用的部分
*最小值:
0,最大值:
65535=2^16-1
*字符字面量使用单引号为定界符号:
'中'
字面量也是整数常量!
特殊字符采用转义字符表示:
如:
'\n''\t''\\''\b''\r'
'\'''\"''\u4e2d'
charc='\\';
5)boolean布尔类型表达:
真(true)/假(false)
建议使用长变量名定义变量
booleanstarted=true;
booleanisMan=true;
isMan=false;
booleanused=true;//二手的
if(used){
System.out.println("打八折");
}
不建议定义没有意义的变量
booleanu=true;//u=you
booleanflag=false;
if(flag){
System.out.println("打八折");
}
4.数据类型转换
char->
byte->short->int->long->float->double
1)自动类型转换,正方向,小类型到大类型的转换会自动完成
符号位会自动扩展,负数补1,正数补0,保证补码数值不变
注意,整数到浮点数转换会损失精确度
自动类型转换也叫"隐式类型转换",是自动发生的,一般不需要处理
inti=-1;
longl=i;
2)强制类型转换(显示类型转换),需求明确处理,是按照反方向,进行的转换,这种转换会溢出,或者损失精度.要注意数据的范围
inti=128+256;//00000000000000000000000110000000
byteb=(byte)i;//-128
longl=0xf80000000L;
intc=(int)l;//负数
l=8;
intd=(int)l;
floatpi=(float)3.1415926535;//损失精度
charc='0';
charx=(char)(c+2);
作业:
1复习并且完成全部课堂演示代码,添加适当的
输出语句,研究输出结果,添加适当的注释.
2尝试计算10个以上255以内的整数转换为2进制,
16进制,相互转换.并且编程验证计算结果
提示:
System.out.println(Integer.toHexString(234));
3(选做)定义方法:
参数是一个整数类型,没有返回值,在
方法中输出这个整数的10进制,2进制
16进制字符串
4尝试实现day02.png中的案例,在周末提交结果
5将人名字符的HEX编码输出,手工转换为二进制,并且验证结果
提示:
可以使用Scanner输入用户数据
预习:
Java运算符,流程控制语句.参考Day03.txt
Java语言基础Day03
2011/8/2
====================
1.Java的方法Method(函数Function)
1)方法就是函数:
y=f(x)=3x+6;
2)方法的语法
(修饰词)(返回值类型)(方法名)(参数列表){
//方法体
}
如:
publicstaticintf(intx){
inty=3*x+4;
returny;
}
4)如果有返回值定义就必须有return语句,返回和返回值类型
兼容的数据
5)方法的参数和方法内部的变量都是局部变量,
这些变量作用域只在方法内部!
6)实参:
方法调用时候实际传递的参数变量
形参:
方法的参数定义,是临时变量.
2.Java运算符
1)数学运算符+-*/%
A运算的封闭性(补码运算的封闭性):
1.同种类型参与运算(可能需要自动类型转换)
2.返回同种类型(可能发生:
上溢出和下溢出)
3.byte,short,char按照int运算
如:
inta=1+'A';
B.整数的除法是整除,除以2相当于移位运算(移动小数点)
C.Java中字面量的运算被Javac优化了,优化为一个固定的常量.
D.%计算除法的余数
1.0对其他数的余数是0
2.n%3是周期函数,函数值[0,3)
3.负数的余数是负数(考试可能出现,工作中很少用)
2)自增(自减)运算++--
1.可以将当前变量自我增加(减少)1
2i++,后++,先将i的值作为整个表达的值,然后将i增加1.
3++i,先++,先将i增加1,然后将i的值作为整个表达的值.
3)逻辑与比较运算
1.逻辑运算与(并且)&&或(或者)||非(否则)!
非短路的逻辑运算&|,比较少使用,逻辑不合理
2.比较运算,比较变量的值,就是逐个"位"比较值:
>>=<<===!
=
基本类型变量的值就是基本值如:
i=1
引用类型变量的值是对象地址值.(在面向对象阶段详细讲解)
inti=1;
longl=1;
System.out.println(i==l);//true
4)条件运算符(3元运算符)
语法:
条件表达式?
表达式1:
表达式2
当"条件表达式"为true时候,表达式1作为整个表达式的值,
否则表达式2作为整个表达式的值
如:
booleanisBoy=true;
intlevel=isBoy?
2:
3;//2
3.分支流程控制
1)if...else
语法:
if(布尔表达式){
//语句块..
}else{
//语句块
}
嵌套:
if(布尔表达式){
//...
}elseif(布尔表达式){
//...
}elseif(布尔表达式){
//...
}else{
//...
}
2)switch...case
语法:
switch:
开关,case:
情况下
switch(整数表达式){
case整数常量1:
//语句序列
break;
case整数常量2:
//语句序列
break;
default:
//语句序列
}
A.switch条件:
只能是整数(intbytecharshort)表达式
switch不能处理long或其他类型
B.case只能是整数(intbytecharshort)常量,不能使用
变量及表达式.如:
'中'
C.break跳转到switch结束继续执行,可以根据业务逻辑是否使用
经常都写break
4.循环控制
1)While循环控制
语法:
while(布尔表达式){
//循环体语句序列
}
作业:
1复习并且完成全部课堂演示代码,添加适当的
输出语句,研究输出结果,添加适当的注释.
2重构课堂案例,将参数通过Scanner输入
3重构课堂案例,加入while循环,增加输入信息合理性判断.
4(选做)案例练习输出等额本息还款计划表
如(示例):
月份本金利息归还
第1月9307121642
第2月9407011642
......
预习:
流程控制语句for(),do...while,Java数组.参考Day04.txt
i++%b
(int)a+b
y=g(x)=3*x*x+2*x+4;
Java语言基础Day04
2011/8/3
====================
1.while
While循环控制
Scannerconsole=newScanner(System.in);
while(布尔表达式){
qty=console.nextInt();
if(qty>0&&qty<=5){//五个以内
break;//打断,打断当前循环
}
}
2.for循环(主要用于几次的循环)
循环控制
for(初始化表达式;布尔表达式;递增表达式){
//循环体
}
Example:
for(inti=0;iSystem.out.println(i);
}
3.do...while
do...while()循环控制
do{
//循环体
}while(布尔表达式);
Example:
do{
System.out.print("输入押注数量:
");
bet=console.nextInt();
}while(bet<=0||bet>balance);//否定条件
4.JavaArray
1)数组变量的声明
int[]ary;声明了数组变量ary,数组变量是代词,
intary[];为了与C语法兼容的写法,不建议写法,
2)数组对象动态初始化
ary=newint[4];//数组变量引用了具体数组对象,就是代词
指代了具体事务.
数组元素是自动初始化的,自动初始化为"零"值.
"零"值:
0,0.0,\u0000,false,null
ary=newint[]{1,2,3};直接给出元素的初始化
3)数组对象的静态初始化,只能用在声明数组变量时候同时初始化
*不能用于赋值语句
int[]ary={1,2,3};
ary={3,4,5,6};//编译错误
Java关键字:
if,public,class,else,while
特殊关键字:
goto,const
java中true,false,null不是关键字,是字面量!
4)数组变量,数组对象,数组元素
如:
int[]ary={1,2,3};
ary是数组变量指代一个具体的数组,同一个变量指代不同的数组
{1,2,3}数组对象
1,2,3是数组元素
5)数组元素的访问,数组对象的大小是固定的,长度是n,下标:
0~n-1
A使用[下标]访问数组元素
B越界访问(小于0/大于等于n),都会发生运行异常
C使用.length属性可以获取数组对象长度
5数组的复制与动态扩展算法
1)数组对象的复制
2)数组的扩展问题
1Java数组对象的大小是固定的,数组对象是不能扩展的
2利用数组复制到方法可以变通的实现数组扩展
3System.arraycopy()可以复制数组
4Arrays.copyOf()可以简便的创建数组副本
5创建数组副本的同时将数组长度增加就变通的实现了
数组的扩展
案例1:
统计一个字符在字符串中的所有位置.
字符串:
统计一个字符在字符串中的所有位置
字符:
'字'
返回:
{4,7}