1.java 语言概念
1.1:语言编译过程:
1.2:Java平台分类:
JavaSE(Java Platform Standard Edition):Java平台标准版,包含那些构成Java语言核心的类,可以理解为学习Java的基础(基础班所要学的)
Java平台企业版,包含JavaSE,并且还包含用于开发企业级应用的类
准确的说JavaEE是一套用于企业开发的技术规范,包含很多组件,13种核心技术,如:XML、JSP、Servlet、JDBC、Java Mail等.
ava平台微型版,包含JavaSE的一部分,另外提供一些用于小型设备上的类。
1.3:JDK与JRE
Java开发工具,包含开发Java程序的所有组件,包含JRE
Java运行环境,如果要运行Java程序,就需要JRE的支持
常用组件:
src.zip Java是一门开源的语言,其源代码都在这个压缩包中
rt.jar Java的基础核心类库,我们编写Java程序时使用的class都在这个jar包中
javac.exe 编译器,将.java源代码编译为.class文件
java.exe 虚拟机,运行Java程序的工具
jar.exe 将class文件打成jar包的工具
javadoc.exe 生成帮助文档的工具
1.4:常用DOS命令
跳转到指定盘符: 盘符: 例:C: D: E:
跳转到指定目录: cd 目录 例:cd Itcast\day01 cd Tencent\QQ\Bin
显示当前目录下文件: dir
跳转到上级目录: cd..
跳转到根目录: cd \
清屏: cls
环境变量
1.5.1:环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数
path:
如果想在任意目录下运行一个程序,我们就需要将程序所在的路径配置在path环境变量中。
通常我们会将javac.exe所在目录配置到path中,因为我们需要在任意目录下都能编译Java源文件。
配置完成之后可以在命令行输入javac测试,如果显式帮助信息则是配置成功。
classpath:
Java虚拟机运行时加载类的路径。JDK5之后不配置默认为当前目录“.”。如使用
1.5.2:配置方式
a. 命令行
点击屏幕左下角开始 – 运行 – 输入cmd – 在命令行中直接输入命令进行修改。(Windows+R键可以直接跳出运行命令行。)
查看变量值:set 变量名
设置变量值:set 变量名=变量值,多个值之间使用分号“;”分割,引用变量时使用“%变量名%”形式
注意:此种方式仅适用于当前窗口
b. 我的电脑
鼠标右键点击我的电脑 – 属性 – 高级 – 环境变量
找到要修改的变量将其值修改,此种方式永久有效
*操作
**新建一个环境变量,格式如下
***变量名 JAVA_HOME
***变量值 JDK的安装目录。(D:\develop\Java\jdk1.6.0_30)
**编辑Path
***变量名 Path
***变量值 %JAVA_HOME%\bin;本身的环境变量值
注意:
配置环境变量之后可以查看编译器(javac.exe)和虚拟机(java.exe)版本,虚拟机版本不能低于编译器。
使用哪个版本的编译器和虚拟机取决于path环境变量,如果虚拟机版本过低,可以通过环境变量来修改。
编译器版本查看方式:javac –version
虚拟机版本查看方式:java –version
1.6:第一个代码:
1.6.1.步骤:
1.新建文本文档,扩展名改为.java,在文件中写入代码。
2.编译字节码文件
a. 左键单机屏幕左下角开始 – 运行 – 输入cmd启动命令行窗口
b. 使用DOS命令进入源代码所在目录
c. 使用编译器(javac.exe)编译源代码,javac 文件名.java,编译后在该目录中会出现扩展名为class的字节码文件
3.运行程序
使用虚拟机(java.exe)运行class文件,java 文件名,注意不要加扩展名,因为虚拟机只能运行class文件,扩展名省略不写,如写则报错。
1.7:进制:
1.7.1:概念
二进制:由0和1组成,逢二进一,计算机中存储任何数据都是以二进制的形式进行存储的
八进制:八进制在程序中以0开头,由0到7的数字组成,逢八进一
十进制:由0到9的数字组成,逢十进一
十六进制:十六进制在程序中以0x开头,由0到9的数字和A-F的字母组成,逢十六进一
1.7.2:转换
a. 十进制转二、八、十六进制
除法取余,将要转换的数除以进制数,记住余数,再除以进制数,记住余数,直到这个数等于0为止,将所有余数反转就是对应的二进制表现形式。
b.二、八、十六进制转十进制
乘法,将要转换的数编号,编号从低位开始,从0开始,将每一位上的数乘以进制数的编号次方,最后将所有乘得的结果相加就是十进制表现形式。
c.二进制和八进制互转:八进制的每一位对应二进制的三位。
二进制和十六进制互转:十六进制的每一位对应二进制的四位。
1.7.3:二进制负数
一个负数的二进制表现形式就是这个负数忽略符号的正数对应的二进制取反再加一。
计算机中存储的二进制数最高位是0则是正数,是1则是负数。
1.8:码表
ASCII:英文码表,每个字符占1个字节。A是65,a是97 ,这个要知道。
GB2312:兼容ASCII,包含中文,每个英文占1个字节(正数),中文占2个字节(2个负数)。
GBK、GB18030:兼容GB2312,包含更多中文,每个英文占1个字节(正数),中文占2个字节(第一个负数、第二个可正可负)。
Unicode:国际码表,每个字符占2个字节。Java中存储字符类型就是使用的Unicode编码。
UTF-8:国际码表,英文占1个字节,中文占3个字节。
2.基本语法
2.1:语法前提
2.1.1:Java是严格区分大小写的。
2.1.2:注释
单行注释: // 注释内容
多行注释: /* 注释内容 */
文档注释: /** 注释内容 */
标识符:
标识符可以理解为程序中我们自定义的一些名字,包括:包名、类名、函数名、变量名、常量名(这个东西后面遇到,边学边记,现在就是了解。)
标识符的命名规则
由大小写字母、数字、下划线(_)和美元符号($)组成,开头不能是数字。不能使用关键字。推荐使用全英文。
标识符的规范:
类名、接口名:所有单词首字母大写,驼峰式命名,例如:XxxYyyZzz (后面主要就是用它)
第一个单词首字母小写,其他单词首字母大写,驼峰式命名,例如:xxxYyyZzz
所有字母都大写,单词之间用下划线分割,例如:XXX_YYY_ZZZ
包名:全部小写,例如:xxx.yyy.zzz
2.2:语法
2.2.1:数据类型
int:整型,整数,4个字节。
long:长整型,整数,8个字节。以L结尾。
float:单精度浮点数,小数,4个字节。以F结尾。
double:双精度浮点数,小数,8个字节。
boolean:布尔,只有两个值,真(true)或假(false),1个字节。
char:字符,单个字符,2个字节。例如:'a', '中', '5', '\u0026' , '\u0027'
在字符常量中,斜杠(\)是一个特殊的字符,它的作用是用来转义后面一个字符,这些字符通常是不可见的或者有特殊意义的。
'\r' 回车,回到一行的开始
'\n' 换行,换到下一行
'\t' 制表符,键盘上的Tab
'\b' 类似退格,键盘上的Backspace
以上字符都不可见,无法直接表示,所以用斜杠加上另外一个字符来表示。
'\\' 斜杠,Java代码中的斜杠是转义字符,用来和后面一个字符配合使用,在真正需要用斜杠的时候那么就要用另一个斜杠来转义。
以上字符都有特殊意义,无法直接表示,所以用斜杠加上另外一个字符来表示。
String:字符串,由若干个字符组成的一串。可以是一个字符、多个字符、或者一个都没有。字符串没有固定大小。
null,只有这一个值,用来表示一个引用为空。
2.2.2:运算符:
2.2.3:语句
1.判断:
if...else if...else决定程序流程
switch...case...default语句控制程序流程
c:语法:表达式 ? 结果1 : 结果2;如果表达式结尾为true取结果1,为false则取结果2。
2.循环:
true,true则执行循环体
while中的表达式,如果是true继续执行
c:for(语句1; 语句2; 语句3)
语句1:这条语句会在整个循环开始之前执行,且仅运行一次,不参与循环。
语句2:必须是一个返回boolean值的表达式,如果写了这个语句那么每次循环开始之前会判断,true则执行循环,false则不执行。没写则直接执行。
语句3:这条语句在每次循环体运行结束之后执行。
d:for(类型 对象:集合或数组){}
2.2.4:数组:
a:数组是一个类型一致,长度不可变的容器。可以通过索引操作容器中的每一个元素。
b:一维数组:
定义:1:int[] arr = new int[3];
2:int[] arr = new int[]{1,2,3};
3:int[] arr = {1,2,3};
c:二维数组:
定义:1:int[][] arr = new int[3][];
2:int[][] arr = new int[][] { { 1, 2, 3 }, { 4, 5 }, { 6, 7, 8, 9 } };
3:int[][] arr = { { 1, 2, 3 }, { 4, 5 }, { 6, 7, 8, 9 } };
3.面向对象(Object Oriented):
3.1:面向对象优点:
提高代码复用性。
使用者无需关心具体细节。
转变程序员角色,更加符合人的思维习惯。
3.2:类与对象:对象是类的实例,类是对象的描述。
3.3:oo特点:
封装(Encapsulation):将所有属性隐藏,提供公有方法对其访问。将不需要对外提供的方法隐藏。
优点:提高安全性,简化编程
继承(Inherit):使用extends 关键字,Java只支持单继承,不支持多继承,但是可以多重继承
向上转型:定义一个父类类型的变量来记住子类对象。
instanceof进行判断,编译时预知错误。
多态(Polymorphism):根据传入的子类对象不同函数可以运行处多种形态。
3.4:重载(Overload)和重写(Override)的区别:
重载是方法名相同,参数列表不同,和返回值类型无关。
重写是方法名、参数列表、返回值类型全相同。