JAVA笔记第一章基础部分李兴华网易云课堂.docx
- 文档编号:11792388
- 上传时间:2023-04-01
- 格式:DOCX
- 页数:43
- 大小:496.75KB
JAVA笔记第一章基础部分李兴华网易云课堂.docx
《JAVA笔记第一章基础部分李兴华网易云课堂.docx》由会员分享,可在线阅读,更多相关《JAVA笔记第一章基础部分李兴华网易云课堂.docx(43页珍藏版)》请在冰豆网上搜索。
JAVA笔记第一章基础部分李兴华网易云课堂
1、java简介
Java是现在最为流行的编程语言之一,也是拥有众多厂商支持的编程语言之一,同时Java已经成为了一个事实上的应用层开发的标准(基于业务的开发)。
其上所构建出来的框架也是最多的,发展的如此良好归结于一点:
反射机制(所有框架的灵魂)。
Java语言的前身是在1991年开发出的OAK平台,最早是为一个GREEN的项目而设计的,此项目的核心意义在于利用email来控制家电产品运行,也就是最早所谓的物联网的概念。
当时SUN的工程师们原本打算使用C++进行开发,后来考虑到C++复杂性,于是以C++为基础开发出了一个OAK平台技术,所以Java是使用C++编写。
Java推出了HotJava浏览器技术,并且获得了相当大的成功,所以Java最早的定位就是基于网络的。
后来Java经过了一些时间的沉淀,在1995年5月23日的时候正式推出了JDK1.0,同时OAK被重新命名为Java,之后在1998年的时候,推出了JDK1.2,同时将Java更名为Java2,到了2005年十周年大会的时候,推出了JDK1.5版本,或者称为JavaSE5.0,最新的版本是JDK1.8,要想使用广泛,还需要至少3年。
Java是由最早的SUN(斯坦伏大学网络)开发的,SUN是一家从事于硬件生产的公司,而SUN最著名的代表作就是小型机,而最成功的应用是在amazon上进行的。
Amazon是一个在线商店,但是它自己也出版许多的技术图书。
现在amazon比较著名的服务就是云服务,像CIA也购买了amazon云服务,搭建的是一个私有云服务。
但是非常遗憾的是,SUN经历了世界的互联网低潮,低潮之后就一直没有重新站起来,在2009年的时候终于被Oracle收购了。
解释:
关于Oracle收购SUN
·企业平台架构:
操作系统+数据库+中间件+编程语言;
·微软的产品:
Windows+SQLServer+IIS+.NET、Office;
·Oracle的产品:
UNIX+Oracle+OAS(收购BEA得到WebLogic)+PL/SQL(收购SUN取得Java)、CRM、ERP;
而Java技术的发展又有了几个分支:
·J2SE(2005年之后更名为JavaSE):
提供了一些基础版本的支持;
·J2EE(2005年之后更名为JavaEE):
提供了企业平台搭建,现在使用最广泛的架构;
·J2ME(2005年之后更名为JavaME):
提供了嵌入式开发的支持,但是却出生在了一个不好的时代,Nokia横行的时代,但是J2ME在哪个时候只能够作为游戏的出现。
后来被Android所取代了。
Java主要的特点:
Java语言足够简单、Java是一门面向对象的编程语言、Java提供了垃圾的自动收集机制、Java提供了多线程与反射操作机制、Java具备很强的可移植性。
由于所有的程序不是直接与具体的操作系统捆绑在一起,那么都是经过JVM处理后执行的,所以只要JVM支持的功能不改变,那么程序可以在不同的平台间进行任意的移植。
但是由于程序没有操作系统直接接触,所以会导致性能下降,最早也是容易被竞争对手诟病的问题,但是随着硬件技术的发展,这些问题都解决了。
2、JDK安装
如果要进行Java程序的开发,那么需要下载JDK(),本次使用的是JDK1.7版本。
但是在进行JDK的安装之前请保证本机的病毒防火墙关闭。
安装过程之中会询问用户是否要安装JRE,在现在的操作系统里面都支持了JRE,但是支持的并不是最新的,所以本次是选择安装新的JRE,所谓的JRE指的是JAVA运行时环境,即:
如果只有JRE,那么表示只能够运行Java程序,但是却不能够进行开发。
安装完成之后可以发现所有JDK的可执行程序路径:
D:
\Java\jdk1.7.0_09\bin。
但是这些命令本身并不属于windows系统,所以需要首先进行路径的配置:
【我的电脑】—【属性】—【高级】—【环境变量】—【编辑path】。
此时在path环境变量里面已经存在有一些其它配置,而且多个路径之间要使用“;”进行分割。
把新的路径放在最前面,此时的效果如下。
3、基本概念
3.1第一个程序
范例:
定义Hello.java程序
publicclassHello{
publicstaticvoidmain(Stringargs[]){
System.out.println("HelloWorld.");
}
}
当程序编写完成之后,下面就可以采用如下的方式进行操作(基于命令行方式):
//在WINDOWS命令窗口下进行操作执行。
·编译程序:
javacHello.java,执行之后一个Hello.class的字节码文件,也是真正要执行的程序;
·解释程序:
javaHello,解释程序,在JVM上进行解释。
第一个程序虽然简单,但是却包含了所有Java的核心运行过程,针对于每一步进行解释。
1、 定义类的部分:
publicclassHello{
类之中的代码;
}
类是在明天开始才要解释的概念,那么在Java之中所有的程序都要求以类为单元进行编写,对于类的定义有两种:
·publicclass类名称:
文件名称要与类名称保持一致,但是一般而言,在一个*.java文件里面只能够有一个publicclass定义;
·class类名称:
文件名称可以与类名称不同,但是生成的*.class名称是定义的类名称,在一个*.java文件里面可以同时使用class定义多个类,编译之后每一个类会自动生成各自的*.class文件;
在日后进行类名称定义的时候,有一个自己的命名规范:
每一个单词的首字母必须大写,例如:
HelloJavaDemo。
2、 主方法
主方法表示的是程序的起点,任何的程序都是由主方法开始执行的,在Java中的主方法组成比较长:
publicstaticvoidmain(Stringargs[]){
编写代码,今天的代码都在此处编写;
}
一般主方法都习惯于将其放在使用publicclass定义的类之中,所以主方法所在的publicclass类,日后称为主类。
3、 系统输出
系统输出指的是将提示信息输出到标准输出设备——显示器上,对于系统输出有两种方式:
输出之后增加换行:
System.out.println("内容");
输出之后不增加换行:
System.out.print("内容");
把以上的基本程序弄熟练了,基本上今天的Java程序的结构也就都固定了。
3.2CLASSPATH初步分析(重点)
通过单词的含义就可以清楚的知道,CLASSPATH指的是类的保存路径。
例如,现在在D:
\testjava目录下存在有一个“Hello.class”文件存在,那么此时命令行所在的路径也是“d:
\testjava”,所以可以直接使用“javaHello”这个类。
但是如果说此时命令行的所在路径为“e:
”,在e盘下并没有存在Hello.class文件。
那么一旦执行了“javaHello”命令会出现如下的错误提示信息:
错误:
找不到或无法加载主类HelloError:
NotFoundClassError:
Hello
那么现在就希望即使所在的路径在e盘上,也可以加载到d:
\testjava目录下的Hello.class文件,则可以通过设置CLASSPATH完成。
范例:
设置CLASSPATH
SETCLASSPATH=d:
\testjava
设置完成之后,那么再次执行“javaHello”命令。
那么发现可以找到Hello.class文件,所以可以得出一个结论:
每当使用java命令解释一个类的时候,会自动的通过CLASSPATH所设置的路径加载所需要的类。
但是如果在实际的工作之中这样到处乱设置CLASSPATH并不方便,最好的做法是从当前所在的路径下去加载所需要的类文件。
那么往往会将CLASSPATH设置为“.”,表示从当前所在路径加载。
范例:
设置从当前所在路径加载类
SETCLASSPATH=.
默认情况下所有的CLASSPATH都是通过当前所在路径进行加载的,但是在一些软件配置的时候,有可能会自动的帮你去修改CLASSPATH路径,那么此时就必须手工设置,但是上面的手工设置只适合于当前的命令行方式。
如果要想针对于所有的命令行窗口,则可以建立一个新的环境属性。
面试题:
请解释PATH和CLASSPATH的区别?
·PATH:
是操作系统的程序配置路径,通过此路径配置可执行程序;
·CLASSPATH:
是Java程序解释时所使用的路径,用户执行java命令的时候会自动的根据CLASSPATH所设置的路径进行类的加载,一般都将其设置为“.”表示从当前所在路径进行类加载。
3.3标识符与关键字、注释(重点)
在定义类、变量名称、方法名称的时候对于命名是有组成要求的,在Java里面任何的一个标识符可以由字母、数字、_、$符号所组成,其中不能以数字开头,不能是Java的关键字(保留字),像Hello、JavaDemo,都属于合法的标识符。
但是在定义标识符的时候个人原则:
建议都以字母开头,由字母和数字组成,少用“_”,坚决不用“$”。
在以上所给出的49个关键字之中,有两个关键字只是介绍不讲解:
native、volatile。
在给出的关键字之中,有三个严格来讲不属于关键字,只属于特殊含义的单词,例如:
null、true、false;
Java里面有两个不使用的关键字:
goto、const
在JDK1.4之后增加了一个assert关键字,将在异常处理中使用;
在JDK1.5之后增加了一个enum关键字。
除此之外任何的语言都会存在有注释的概念,所谓的注释指的是程序在编译的时候不会编译的程序部分,在Java里面有三类注释:
·单行注释:
//注释;
·多行注释:
/*…*/;
·文档注释:
/**…*/此类注释最后再使用。
3.4Java数据类型划分(重点)
程序的数据类型指的是允许操作的数据形式,例如数据库之中可以操作字符串、数字、日期时间,那么程序也是一样的。
在Java之中数据类型一共分为两大类:
·基本数据类型(只包含具体的数据,不牵扯到内存的关联):
数值型:
整型:
byte、short、int、long; 默认值:
0
实型(浮点型):
float、double; 默认值:
0.0
字符型:
char; 默认值:
'\u0000'
布尔型:
boolean; 默认值:
false
·引用数据类型(指的内存的关联数据,类似于指针的概念):
类、数组、接口。
默认值:
null
通过以上的数据的保存大小可以发现,按照由小到大的保存顺序:
byte 以上给出的几个基本类型,有个人总结的几个核心用法: ·表示整数永恒使用int、表示小数永恒使用double; ·在进行数据传输和字符转码的过程之中都使用byte; ·表示日期时间或者是文件大小的时候都使用long; ·表示逻辑关系的时候往往都使用boolean。 3.4.1整型数据(byte、short、int、long) 整型数据是最为常用的一个数据类型,其不能保存小数数据,在Java之中,默认的一个整数就是int型数据类型。 范例: 定义整型变量 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ //10是一个整数,既然是整数就是int数据类型 //10也称为常量,而num是一个变量 intnum=10; //int变量=int型常量 num=20; //num的内容被改变了 System.out.println(num); } } 本程序之中首先将一个数字10(是一个int型常量)赋予int型的变量num,而后修改了num变量的内容。 提示: 关于不同版本JDK的问题(解释之前所谓的默认值暂时无法使用的问题) 那么在JDK1.5之后,针对于变量的声明与赋值这两个操作上已经发生了变化。 范例: 正确代码 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intnum; //定义一个int型变量,定义的时候没设置数值 num=10;//为变量设置内容 System.out.println(num); } } 范例: 错误代码 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intnum; //定义一个int型变量,定义的时候没设置数值 System.out.println(num); } } 变量在使用前一定要设置默认值(不要去依靠系统提供的默认值),但是如果在JDK1.4及其之前版本的话,连最早正确的代码也是错的(第一行是定义变量、第二行是为变量赋值,这个是错误的),所以最保险的做法是是在声明变量的同时就设置好内容(intnum=10); 既然是数值型的变量,那么变量定义之后也是可以进行数学计算的。 范例: 进行数学计算 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intnumA=10; intnumB=20; intresult=numA+numB; //int+int=int System.out.println(result); } } 每种数据类型都有其自己的最大值和最小值范围,那么如果说超过了这个范围呢? 范例: 观察超过数据范围的情况 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intmax=Integer.MAX_VALUE; //取得int的最大值 intmin=Integer.MIN_VALUE; //取得int的最小值 System.out.println(max); //最大值: 2147483647 System.out.println(min); //最小值: -2147483648 //int型+int型=int型 System.out.println(max+1); //最大值+1=-2147483648(最小值) System.out.println(max+2); //最大值+1=-2147483647(次最小值) //int型-int型=int型 System.out.println(min-1); //最小值-1=2147483647(最大值) } } 发现数据是一个循环过程,最大值如果继续进行加法计算则变为了最小值,最小值如果继续进行了减法计算,将变为最大值,这一概念属于数据的溢出。 面对数据的溢出问题,如果要想解决,那么唯一的途径就是扩大使用的数据范围,比int保存范围大的数据类型是long,那么如果要想将int变为long,有两种方式: 方式一: 在数字前加上一个“(long)” longx=(long)10; //int变为long 方式二: 是在数字后加上一个字母“L” longx=10L; //int变为long 范例: 利用long数据类型解决数据的溢出问题 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intmax=Integer.MAX_VALUE; //取得int的最大值 intmin=Integer.MIN_VALUE; //取得int的最小值 System.out.println(max); //最大值: 2147483647 System.out.println(min); //最小值: -2147483648 //int型(自动向上变为long)+long型=long型 System.out.println(max+1L); //2147483648 System.out.println(max+(long)2); //2147483649 //int型(自动向上变为long)-long型=long型 System.out.println(min-1L); //-2147483649 } } 那么通过这样一个程序就可以得出一个结论: 当范围小的数据类型与范围大的数据类型一起进行数学计算的时候,范围小的数据类型会自动的变为范围大的数据类型,当类型统一之后再进行数学计算。 byte→short→int→long。 而在整型数据之中还存在有一种byte的类型,这个长度只有“-128~127”之间。 范例: 观察byte操作 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intnum=129; byteb=(byte)num; //范围大的数据变为范围小的数据,需要强制转换 System.out.println(b); } } 范围大的数据类型如果要变为范围小的数据类型,一定要使用强制转换,但是这之中就有可能出现数字的错乱。 但是在使用byte的时候一点很有意思,byte作了一些特殊处理。 范例: 观察原始操作 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ intnum=10; byteb=(byte)num; //int变为byte System.out.println(b); } } 范例: 观察特殊的支持 publicclassTestDemo{ publicstaticvoidmain(Stringargs[]){ byteb=10; //int变为byte System.out.println(b); } } 任何一个整数在Java之中都是一个int类型的常量,现在是将int型变为byte型。 因为10正好在byte的范围之中,而如果不在byte范围之中的整型常量,那么依然需要执行强制转型。 3.4.2实型数据(float、double) 在程序之中默认的小数类型就是double,double是范围最大的数据类型。 范例: 观察double的使用 publicclassTestDemo{ publicstaticvoidmain(St
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 笔记 第一章 基础 部分 李兴华 网易 课堂
![提示](https://static.bdocx.com/images/bang_tan.gif)