1 第一天 魔乐java基础视频学习笔记.docx
- 文档编号:11812438
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:19
- 大小:1.17MB
1 第一天 魔乐java基础视频学习笔记.docx
《1 第一天 魔乐java基础视频学习笔记.docx》由会员分享,可在线阅读,更多相关《1 第一天 魔乐java基础视频学习笔记.docx(19页珍藏版)》请在冰豆网上搜索。
1第一天魔乐java基础视频学习笔记
第一天01:
Java简介
Java所需要讲解的知识点如下:
【重点】基本的程序结构、JDK的安装和配置;
【重点】面向对象,是整个java的核心,包括日后的所有学习都是以它为基础;
【重点】Java的常用类库,需要记一些东西,包括代码的片段;
【重点】Java的数据结构以及类集操作;
【重点】Java的IO操作;
【重点】Java的数据库连接操作。
【理解】JDK的新特性、数据结构的基本算法;
【理解】Eclipse开发工具;
【理解】面试题(举一反三);
【理解】多线程的定义与使用;
【理解】网络编程。
对于JavaSE的学习地位:
在笔试和面谈的过程之中,出现问题最多的三个地方(数据库的SQL、JavaSE、JavaWeb),而其中是以JavaSE的问题最多,检测出自己是否已经学会了Java的最好手段:
把所有的关键字依次排查,可以说出每一个关键字的使用环境,使用的注意事项等。
JavaSE按照知识点的重要性,排出以下四个重点内容:
1、面向对象:
以分析和设计为主;
2、Java的类集框架:
主要以数据结构的实现为主;
3、JavaIO:
是面向对象概念的一个集中体现;
4、JDBC:
是进行数据库开发的必须手段。
1.Java简介(了解)
Java的语法结构与C、C++的语法结构类似,但是Java的标准指的是一种作为应用封装的标准,使用Java可以调用一些底层的操作,例如,今天的Android开发,就是利用了Java调用了Linux内核操作形成的。
第一阶段(完善期):
JDK1.0-JDK1.2
第二阶段(平稳期):
JDK1.3-JDK1.4
第三阶段(发展期):
JDK1.5-JDK1.7
在1995年的时候推出了JDK1.0,在1998年的时候推出了JDK1.2(更名为Java2),2005年的时候推出了JDK1.5。
面试题:
请你谈一谈,Oracle收购SUN公司有什么用?
No.
对比
Oracle
Microsoft
1
操作系统
UNIX
Windows
2
数据库
Oracle大型数据库
SQLSever中小型数据库
3
中间件
OAS、收购了EBA得到WebLogic
IIS
4
编程语言
PLSQL、收购SUN得到Java
.NET
而一旦Oracle收购了SUN公司之后,市场上的编程语言的格局,编程三家公司:
Microsoft、Oracle、Adobe(FLEX、Flash编程)。
从Java的开发地位而言,也分为以下的几个方面:
1、J2SE(2005年之后更名为JAVASE):
指的是进行桌面单机程序的开发;
2、J2EE(2005年之后更名为JAVAEE):
指的是企业平台开发;
3、J2ME(2005年之后更名为JAVAME):
进行嵌入式开发。
JavaEE:
只要是进行大型的企业项目开发,像银行、电信等服务等会使用此架构;
JavaME:
Nokia盛行的时候,Java的手机游戏推广的比较好;但是JavaME并没有得到很好的发展,而是后来被Android所取代。
Java语言的本身的特点如下:
1、Java语言足够简单,相对于其他的任何语言而言,是很容易学的;
2、Java避免了C/C++之中的复杂的指针关系,而使用了更为简单的引用方式来进行内存传递;
3、Java是为数不多的支持多线程开发的编程语言;
4、Java提供了自动的垃圾收集机制,可以定期地释放出无用的垃圾空间;
5、Java语言的安全性较高;
6、Java最大的特点是具备可移植性,即:
同一个程序在不同的操作系统上都可以运行。
如果从编程语言的角度而言,应该分为两种:
1、编译型:
编译之后会形成一个*.exe的文件;
2、解释性:
像ASP语言那样,直接将代码放到服务器上进行解释。
但是Java本身却属于两种类型的集合,观察图形:
通过如上的图形可以发现,任何一个*.java程序首先必须经过编译,编译之后会形成一个*.class的文件(字节码文件),而后在电脑上执行的不是*.java,而是编译之后的*.class文件(这个文件可以理解为“加密”文件),但是解释程序的电脑并不是一台真正意义上的电脑,而是一台由软件和硬件模拟出来的电脑—Java虚拟机。
Java虚拟机的最大的作用是起到平台的支持上,通过如上的图形可以发现,所有要解释的程序在JVM上执行,但是由不同版本的JVM去匹配不同的操作系统,这样只要JVM的支持不变,程序可以任意的在不同的操作系统上运行。
但是这种运行方式很明显没有直接运行在操作系统上性能高,不过随着硬件技术的发展,这些问题几乎可以忽略了。
2.JDK的安装与配置(重点)
JDK1.5还是主流使用版本
在安装之前最好关闭本机的防火墙。
3.第一个Java程序:
永远的“HelloWorld!
”(重点)
第一个要测试的程序永远从“HelloWorld”开始,Java程序的文件后缀必须是*.java。
范例:
定义一个新的文件:
Hello.java
publicclassHello{
publicstaticvoidmain(Stringargs[]){
System.out.println("HelloWorld!
");
}
}
当一个*.java程序编写完成之后按一下步骤执行:
1、编译程序,通过命令行进入到程序所在的路径,执行:
javacHello.java,形成“Helloclass”(字节码);
2、解释程序,对生成的Hello.class在JVM上执行,输入javaHello。
如有以下错误提示:
直接提示“UnsupportedClassVersionError”(不支持的类版本错误),验证当前的JPE版本,输入:
javaversion。
、
解决方法一:
删除掉Oracle的所有JRE配置,不建议用;
解决方法二:
由于path的内容采用的是顺序读取方式,可以将新的配置写在最前面。
4.第一个程序解释
第一个程序编写完成之后,下面来对此程序的组成进行说明:
1、关于类的定义:
所有的java程序一定要被类所管理,那么定义类的格式如下:
[public]class类名称{}
对于类的定义现在有两种定义:
●publicclass定义:
类名称必须和文件名称保持一致,在一个*.java之中只能有一个publicclass;
●class定义:
类名称可以和文件名称不一致,但是生成的是class定义的名称,在一个*.java程序之中可以同时存放多个class的定义,编译之后会分为不用的*.class文件。
2、主方法
主方法表示的是一个程序的起点,要放在一个类之中,主方法定义格式如下:
publicstaticvoidmian(Stringargs[]){}
这些字母的组成是完全固定的。
额外声明:
日后主方法所在的类都将其称为主类,一般主类都使用publicclass声明。
3、系统输出
可以直接在屏幕上输出信息,操作语法:
输出后加换行:
System.out.println();
输出后不加换行
System.out.print();
5.Classpath(重点)
如果说现在要想执行某一个java程序,那么一定要进入到程序所在的路径下才可以执行,例如:
现在程序的路径是在d:
\testjava文件夹之中,如果要想执行这个文件夹之中的所有的*.java文件,则需要进入到此目录下执行,那么如果现在希望在不同的目录下也可以执行呢?
那么会直接提示用户,找不到这个类,那么现在非要执行的话,则必须配置CLASSPATH,配置语法如下:
SETCLASSPATH=*.class文件所在的路径
范例:
将CLASSPATH配置到d:
\testjava目录之中
SETCLASSPATH=d:
\testjava
此时,再次执行“javaHello”命令,发现程序可以正常的执行完毕。
而通过这个演示也可以得到一个结论:
当使用java命令执行一个类的时候,会首先通过CLASSPATH找到指定的路径,而后在此路径下加载所需要的*.class文件。
但是,如果像本程序这样,到处乱指CLASSPATH也是不可能的,最好的做法还是从当前所在的路径下加载所需要的*.class问价比较合适,那么这个时候往往将CLASSPATH设置为“.”.
SETCLASSPATH=.
这个“.”也属于默认的配置,之所以要强调“.”的问题主要原因是在于,日后可能有一些其他的程序自动的的修改本机的CLASSPATH,那么这个时候只能依靠手工配置,不过以上的配置方式都只是针对于一个命令完成的,如果要针对于所有的命令行方式完成,则就需要增加一个新的环境属性。
面试题:
请解释PATH和CLASSPATH的区别?
●PATH:
是操作系统的环境属性,指的是可以执行命令的程序路径;
●CLASSPATH:
是所有*.class文件的执行路径,java命令执行的时候将利用此路径加载所需要的*.class文件。
6.标识符和关键字(重点)
在程序之中用于定义名称的都表示标识符,例如:
类的名称、方法名称或变量名称等等,在java之中的标识符的定义格式:
由字母、数字、_、$组成,其中不能以数字开始,不能是java中的保留字。
但是在这里需要提示的是,所有的标识符之中用户不要去使用“$”定义,而且标识符一定要有自身的意义,不要随意起名称,一般都建议使用英文字母组成,例如:
studentName,但是在定义变量(标识符)或方法的时候也有一个明确的要求:
第一个单词的首字母小写,之后每个单词的首字母大写。
而在定义类名称的时候(标识符),每一个单词的首字母大写,例如:
TestDeme。
关键字也被称为保留字,指的是一些有特殊含义的内容,在定义标识符的时候不能够去使用,而Java之中的保留字定义如下:
7.数据类型
从实际的开发角度上,一下的几种数据类型最为常用:
1、int型:
只要是看见了整型的定义,其类型都是int;
2、double型:
只要是看见了小数的定义,其类型都是double;
3、byte型:
日后进行数据传输的时候使用此类型,讲解到IO和编码转换的操作上使用;
4、boolean:
用于程序的逻辑操作使用;
5、long:
表示日期时间、表示文件长度的时候。
整型
整型就表示一个基本的整数,可以直接使用int定义,而且在java之中默认的一个整数,其类型就是int。
有两点说明:
1、请保持良好的编程习惯,在每一个操作之中都加上一个“”(空格);
2、所有的变量在使用之前,一定要为其赋予默认值。
要求:
所有的变量一定要在其定义的时候直接赋值
为了方便验证,下面给出操作,可以通过它得出int的最大值和最小值。
1、取得int的最大值:
Integer.MAX_VALUE
2、取得int的最小值:
Integer.MIN_VALUE
Ctrl+J复制当前行
要想解决这种数据溢出的主要方法就可以通过扩大数据范围来完成,比int范围大的范围是long型,所以现在有如下的两种方式完成:
数字L,(long)数字。
所有的程序的操作之中的数据类型转换:
1、如果小范围和大范围操作,小范围自动变成大范围,例如:
int+long=long;
2、如果现在把表示范围大的数据变成范围大的数据变成范围小的数据,则必须强制完成,例如:
int型=(int)long型
另外还需要强调的是byte型数据,这个表示的是字节的定义。
此类型的范围是-128~127。
可是,需要额外提醒下,有个问题,算是一个特殊支持:
在为byte类型赋值的时候,如果其给出的数据范围在byte范围之中,则自动的将int变为byte型数据,当然这种操作指示在直接赋值的情况下完成。
浮点型
浮点型指的是小数,在java之中,默认的一个小数实际上对应的类型就是double数据。
而在浮点型数据之中,实际上也分为两种:
double、float,float的范围要小于double。
如果要为folat赋值呢?
必须强制转换:
数字F、(float)数字。
但是需要说明的是,整型数据也可以自动的向浮点型数据转换。
一般在进行数学计算的时候,需要将一些数据变为浮点型。
需要将其中的数据改为double型或者是float型。
以后定义变量的时候,是整型就使用int定义,是小数就使用double进行定义。
而且所有数据的转型:
1、自动转型(由小到大):
byte->short->int->long->float->double;
2、强制转换(由大到小):
double->float->long->int->short->byte.
字符型
在Java之中使用单引号“’’”定义的内容就表示一个字符,例如:
‘A’,那么定义字符的时候类型使用char完成。
在各个语言之中,char和int之间是可以相互转换的,在C语言之中转换的编码是ASCII转换,当时的编码范围:
1、大写字母范围:
65~90;
2、小写字母范围:
97~122(大小写相差32)
但是需要提醒的是,Java在定义字符的时候所使用的并不是ASCII码,而是UNICODE编码,这是一种使用十六进制定义的编码,可以表示出任意的文字,这就包含了中文定义。
UNICODE设计的时候包含了所有的ASCII码,所以又一部分的编码是完全和ASCII码重复的,但是也有许多是不重复的编码。
布尔型
布尔型主要表示的是一种逻辑的判断,其中布尔是一个数学家的名字,而布尔数据只有两种取值:
true和false。
但是需要提醒的是,在许多的语言之中,布尔型也使用0和非0来表示,不过此概念在Java之中无效,只有true和false两个内容。
初见String
Sring本身不属于Java的基本数据类型,因为它属于一个类(引用型数据),但是这个类使用起来可以像基本数据类型那样方便的操作,而且也使用很多,只要是开发都会存在字符串,字符串是使用““””定义的一串数据。
在字符串之中可以使用“+”进行字符串的连接操作。
但是在使用字符串的过程之中,也需要注意一点,在char类型之中实际上除了定义单个字符之外,还需要注意转义字符:
\\,\t,\n,\”,\’。
所有的数据类型,只要是碰到了S挺热闹过的连接操作(+),那么所有的类型都会自动先自动向String,之后再进行字符串的连接操作。
8.运算符(重点)
+、-、*、/都属于运算符,而且存在优先级。
8.1三目运算符
三目运算是一种赋值运算符,其语法格式如下:
数据类型变量=布尔表达式?
满足条件设置的内容:
不满足条件设置的内容;
如:
inttemp=x>y?
x:
y;
也可以通过if…else完成。
8.2逻辑运算符
逻辑运算一共包含三种:
与(多个条件一个满足)、或(多个条件有一个满足)、非。
1、与操作:
表示将若干个条件一起进行连接判断,同时满足返回true,有一个不满足返回false。
有两种:
&和&&。
2、或操作:
若干个条件一起判断,其中只要有一个返回true,结果就是true,只有都返回false的时候才是false,有两张:
|和||。
8.3位运算符(了解)
位运算在Java之中存在:
&、|、^、~、>>、<<、>>>,但是如果要想进行位运算之前,那么首先必须先知道如何将十进制数据变为二进制数据,原则:
数据出2,取余,最后倒着排列。
面试题:
请问如何可以更快的计算2的3次方。
向左边移位2位。
publicclassHello{
publicstaticvoidmain(Stringargs[]){
intx=2;
System.out.println(x<<2);
}
}
面试题:
请解释&和&&,|和||的区别?
1、逻辑运算上:
&:
表示普通与,所有的判断条件都要依次执行;
&&:
表示短路与,若干个条件,如果前面的条件返回了false,那么后面的不再判断,结果就是false;
|:
表示普通或,所有的判断条件都要依次执行;
||:
表示短路或,若干个条件,如果前面的条件返回了true,后面的不再判断,结果就是true。
2、位运算:
&表示位与计算、|表示位或的计算。
9.程序结构(重点)
程序结构在语言之中一共分为三种:
顺序结构、选择结构、循环结构。
9.1顺序结构
所有的代码按照先后的顺序依次进行执行。
9.2分支结构(选择结构)
就相当于提供了一些条件判断,根据判断的结果来选择执行何种操作,对于分支结构主要操作语法:
if、if…else、if…elseif…else,这三种结构的完整语法如下:
If语法
If…else语法
if…elseif…else
If(布尔表达式){
条件满足时执行的程序;
}
If(布尔表达式){
条件满足时执行的程序;
}else{
条件不满足时执行的程序;
}
If(布尔表达式1){
条件满足时执行的程序;
}elseif(布尔表达式2){
条件满足时执行的程序;
}…else{
所有条件都不满足时执行的程序;
}
但是对于多条件判断使用if…elseif…else是可以判断布尔条件的,如果是多数值判断,可以通过swithch完成,语法:
switch(判断值){
case数值1:
满足此数值时执行的语句;
[break;]
case数值2:
满足此数值时执行的语句;
[break;]
case数值3:
满足此数值时执行的语句;
[break;]
……..
Default:
所有条件都不满足时执行的语句;
[break;]
对于switch操作,主要使用的是整型或者是字符来完成。
在JDK1.7之后,可以判断字符串String。
9.3循环结构
循环的概念主要值得是某一块代码可以被重复执行多次,而循环的操作,分为两种语法:
while循环、for循环。
1、while循环
do…while表示先执行后判断,while先判断再执行。
如果循环条件都不满足的情况下,do…whiel至少执行一次,而while一次都不会执行。
通过以上给出的两个格式,应该可以发现出循环结构的特点:
●循环的结束判断;
●每次循环体执行的时候,循环条件要求修改。
2、for循环
for循环的最大特点是已知循环次数,for循环的语法如下:
个人总结,关于循环的出现情况:
●while循环:
在不确定循环次数,但是确定循环结束条件的情况下使用;
●for循环:
确定循环次数的情况下使用。
对于循环而言,也可以进行循环的嵌套操作。
范例:
九九乘法表
publicclassHello{
publicstaticvoidmain(Stringargs[]){
for(intx=1;x<=9;x++)
{
for(inty=1;y<=x;y++)
{
System.out.print(x+"*"+y+"="+x*y+"\t");
}
System.out.println();
}
}
}
范例:
打印三角形
publicclassHello{
publicstaticvoidmain(Stringargs[]){
for(intx=1;x<=9;x++)
{
for(inty=1;y<=9-x;y++)
{
System.out.print("");
}
for(intz=1;z<=x;z++)
{
System.out.print("*");
}
System.out.println();
}
}
}
10.方法(重点)
10.1方法的基本定义
方法是一段可以被重复调用代码块,但是需要说明的是,今天所讲解的方法,本身是在主类中定义的,并且由主方法调用的。
所以方法的定义格式为:
publicstatic返回值类型方法名称(参数列表){
[return[返回值];]
}
对于返回值类型有两种:
●void:
表示此方法没有返回值;
●数据类型:
基本类型和引用类型。
范例:
定义一个无参的无返回值。
publicclassHello{
publicstaticvoidmain(Stringargs[]){
printInfo();
}
publicstaticvoidprintInfo(){
System.out.println("*HelloWorld*");
}
}
方法名称的命名要求:
第一个单词的首字母小写,之后每个单词的首字母大写,例如:
printInfo()。
方法负责完成某一特定功能,而后用户就可以根据方法定义的格式进行方法的调用。
范例:
定义一个有参有返回值的方法。
定义一个方法,用于判断一个数字是奇数还是偶数,很明显,这个方法的返回值类型应该定义为boolean比较合适,而且如果一个方法上返回的是boolean型数据,则这个方法的名称应该是以isXxx()的形式命名。
publicclassHello{
publicstaticvoidmain(Stringargs[]){
if(isType(3))
{
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
publicstaticbooleanisType(intnum){
returnnum%2==0;
}
}
讲解到方法的时候需要额外强调一点,如果一个方法是使用了void声明,理论上此方法不能返回数据,但是这个方法可以使用return方法来结束调用。
●break:
表示的是退出整个循环;
●continue:
表示的是退出一次循环。
只要是结束的操作都肯定需要使用if判断。
10.2方法的重载(重点)
方法的重载(OverLoading)指的是方法名称相同,参数的类型或个数不同,调用的时候将会按照传递的参数类型或者是个数来完成不同的方法体的执行。
它是自动的根据参数的类型和个数的不同调用不同的方法体进行执行。
如果仅方法的返回值不一样之外,方法的参数类型和参数个数完全一样,这不算方法重载。
额外提醒:
方法重载的时候并没有规定出返回值类型必须统一,即:
重载的方法返回值类型可以不一致,但是从开发的角度而言,建议所有方法重载之后返回值类型统一,但是这个规则不是死的,至少在我们自己编写的代码之中可以满足。
System.out.println()实际上就是进行了方法的重载。
10.3递归调用(了解)
递归操作指的是方法自己调用自己的形式,但是在进行递归操作的时候必须满足如下的几
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一天 魔乐java基础视频学习笔记 一天 魔乐 java 基础 视频 学习 笔记