------- android培训、java培训、期待与您交流! ----------
一、初识java
1、基础常识
1.1什么是软件?
软件:一系列按照特定顺序组织的计算机数据和指令的集合。
1.2什么是开发?制作软件
1.3软件的出现实现了人与计算机之间的更好的交互。
1.4交互方式
图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。(视窗操作系统)
命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作,较为麻烦,需要记录住一些命令。
Dos命令行,课程中常见的命令。
dir:列出当前目录下的文件以及文件夹。
md:创建目录。md kkk 创建名为kkk的目录
rd:删除目录。 rd kkk 删除名为kkk的目录\文件夹(空)
cd:进入指定目录。cd abc\op 进入abc目录中的op文件夹
cd..:退回到上一级目录。
cd\:退回到根目录。
del:删除文件。del op 删除op文件夹中的所有文件,op保留(删除的文件不走回收站)
exit:退出dos命令行。
1.5通过dos命令行的演示,发现原来操作计算机就如同和计算机说话一样。
1.6我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须识别才可以。这就是计算机语言。
2、java语言概述
2.1是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级语言。
2.2是一种面向Internet的编程语言。
2.3随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
2.4是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
2.5 java语言的三大技术框架
J2EE(Java2 Platform Enterprise Edition)企业版
是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。
J2SE(Java 2 Platform Standard Edition)标准版
是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发,比如java版的扫雷。
J2ME(Java2 Platform Micro Edition)小型版
是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。
Java5.0版本后,更名为JAVAEE、AVASE、JAVAME。
2.6Java语言特点:跨平台性。
什么是跨平台性?通过java语言编写的应用程序在不同的系统平台上都可以运行。
原理是什么?只要在需要运行java应用程序的操作系统上,先安装一个java虚拟机(JVM Java Virtual Machine)即可。有JVM来负责java程序在该系统中的运行。
2.7配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2):临时配置方式:set path=%path%;C:\ProgramFiles\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\
注意:在定义classpath环境变量时,需要注意的情况:
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
但是是否还会在当前目录找吗?两种情况:
1):如果classpath的值结尾处有分号,在指定路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在指定的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
清空:set classpath=
setclasspath=.;c:\ 表示当前路径和c盘下。
path与classpath的区别:path先在当前目录下查找,未找到后才在环境变量中查找。可执行文件用path;java的执行文件用classpath。
2.8注释
1.单行注释 //
//后到本行结束的所有字符会被编译器忽略;
2.多行注释 /* */
/* */之间的所有字符会被编译器忽略
3.文档注释 /** */
在/** */之间的所有字符会被编译器忽略,java特有的(用于生成文档)。
注意:多行和文档注释都不能嵌套使用,但能嵌套使用单行注释。可用于调试程序。
写代码:
1,明确需求。我要做什么?
2,分析思路。我要怎么做?1,2,3。
3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。
4,代码实现。用具体的java语言代码把思路体现出来。
第一次写的Hello World程序
/*
需求:独立完成Hello World小程序的编写。
思路:
1、根据需求整理思路
2、
步骤:(根据思考步骤逐步完成代码)
1、定义一个HelloWorld类;
2、编写代码,包括主函数、输出语句;
3、保存成HelloWorld.java文件,注意后缀名为.java。
4、在dos命令行中通过编译工具Javac.exe编译;通过运行工具java.exe运行;显示结果为Hello World。
*/
//关键字严格区分大小写
class HelloWorld//类名书写规范XxxYyyZzz,类名最好有意义,方便阅读
{
public static void main(String[] args) //主程序入口
{
System.out.println("Hello World");//输出语句
}
}
二、java语言基础组成
2.1关键字
定义和特点:
定义:被java赋予了特殊含义的单词。
特点:关键字中所有字母都为小写。
用于定义数据类型的关键字 |
|||||
class |
interface |
byte |
short |
int |
long |
float |
double |
char |
boolen |
void |
|
用于定义数据类型的关键字 |
|||||
ture |
false |
null |
|||
用于定义流程控制的关键字 |
|||||
if |
else |
switch |
case |
default |
while |
do |
for |
break |
continue |
return |
|
用于定义访问权限修饰符的关键字 |
|||||
private |
protected |
public |
|||
用于定义类、函数、变量修饰符的关键字 |
|||||
abstract |
final |
static |
synchronized |
||
用于定义类与类之间关系的关键字 |
|||||
extends |
implements |
||||
用于定义建立实例及引用实例、判断实例的关键字 |
|||||
new |
this |
super |
instanceof |
||
用于异常处理的关键字 |
|||||
try |
catch |
finally |
throw |
throws |
|
用于包的关键字 |
|||||
package |
import |
||||
其他修饰符关键字 |
|||||
native |
strictfp |
transient |
volatile |
assert |
2.2标识符
可简单理解为在Java程序中为了增强阅读性自定义的名称。比如:类名,方法名,变量名等。
命名规则:
(1) 由字母、数字、下划线、$组成,不能以数字开头
注意:此处的字母还可以是中文,日文等;
(2) 大小写敏感
(3) 不得使用java中的关键字和保留字
(4) 别用Java API里面的类名作为自己的类名。
Java中的名称规范:
包名:多个单词组成是所有字母都小写。Xxxyyyzzz
类名接口名:多个单词组成时,所有单词的首字母大写。XxxYyyZzz
变量名和函数名:多个单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。xxxYyyZzz
常量名:所有字母都大写。多个单词时每个单词用下划线连接。XXX_YYY_ZZZ
2.3注释
//单行注释 ; /**/多行注释; /***/文档注释(java特有)
作用:注解程序;调试程序
2.4常量和变量
2.4.1常量表示不能改变的数值。
Java中常量的分类:
1、整数常量:所有整数。
2、小数常量:所有小数。
3、布尔型常量:较为特有,只有两个数值,ture false。
4、字符常量:将一个数字字母或者符号用单引号(’’)标识。
5、字符串常量:将一个或者多个字符用双引号标识。
6、Null常量:只有一个数值就是null。
对于整数:java有四种表现形式。
二进制、十进制、八进制(012)、十六进制(0xff)。
十进制——>二进制。对十进制数进行除2运算。
二进制——>十进制。对二进制数乘以2
其他进制转换。先转换成二进制然后再转成相应的进制数。
八进制是3个二进制位代表一个八进制位。
十六进制是4个二进制位代表一个十六进制位。
负数的二进制表现形式:该数的二进制取反再+1。取反就是将二进制1变成0,0变成1。
负数的二进制位的最高位是1。
2.4.2变量的概念:
占据着内存中的某一个存储区域;
该区域有自己的名称(变量名)和类型(数据类型);
该区域的数据可以在同一类型范围内不断变化;
为什么要定义变量:
用来不断的存放同一类型的常量,并可以重复使用;
使用变量注意:
变量的作用范围, 初始化值
定义变量的格式:
数据类型变量名 = 初始化值;
注:格式是固定的,记住格式,以不变应万变。
作用范围:定义开始到定义它的代码块结束;
同一范围内,不允许多个个局部变量命名冲突。
什么时候定义变量?只要是数据不确定的时候,需要对数据进行存储时,就定义变量。
2.4.3数据类型:
1):基本数据类型:byte、short、int、long、float、double、char、boolean
2):引用数据类型: 数组、类、接口。
级别从低到高为:byte,short,char → int → long → float → double,其中byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。boolean 类型是不可以转换为其他基本数据类型。
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;
2.5运算符号:
1)、算术运算符。
+;-;*;/;% %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。-13%5=-3,13%-5=3,取模时结果的正负号看左边被模数。
+:连接符。“ha”+”ha”结果为:haha,字符串数据跟任何数据使用+号相连接,结果都会变成字符串。
++;--:自增、自减。b=a++:b=a,a++。a先给b赋值后自增。b=++a:a++,b=a。a先自增后赋值给b。
转义字符:通过\ 来转变后面字符或者符号的含义。
\n:换行; \b:退格;\r:按下回车键;\t:制表符。
Window系统中,回车符是由两个字符表示\r\n;linux系统中用\n表示,dos中能识别\n为回车符。
一个汉字是两个字节(16个二进制位) ,而char类型也是两个字节 char ch=‘你’。
2)、赋值运算符。
=;+=;-=;*=;/=;%= 包含数据类型自动转换。
3)、比较运算符。
==;!=;<;>;<=;>=;instanceof
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
&;|;^;!;&&;||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&:只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
&和&&区别:
&:无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:
|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
<<左移;>>右移; >>>无符号右移;&与运算;|或运算;^异或运算;~反码
反码就是二进制取反。
注意:一个数异或一个数两次,值不变。7^4^4=7
练习:对两个变量的数据进行互换。不需要第三方变量。
inta = 3,b = 5;-->b = 3,a = 5;
a= a + b; a = 8;
b= a - b; b = 3;
a= a - b; a = 5;
————————————————————
a= a ^ b;//
b= a ^ b;//b =( a ^ b) ^ b = a
a= a ^ b;//a = a ^ b ^ a = b;
练习:高效的算出 2*8 = 2<<3;
6)、三元运算符:(条件表达式)?表达式1:表达式2
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2。
2.6程序流程控制
2.6.1判断结构
If语句
if(条件表达式){执行语句;}
if(条件表达式){执行语句;}else{执行语句;}
if(条件表达式){执行语句;}else if(条件表达式){执行语句;}……else{执行语句;}
2.6.2选择结构
switch语句
格式:
switch(表达式)//接受的参数(byteshort int char)
{
case 表达式可能的结果值1:
执行语句;
break;
case 表达式可能的结果值2:
执行语句;
break;
...
default:
执行语句;
break;//最后这个一般不写
}
备注:
case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default。
结束switch语句的两种情况:遇到break,switch语句执行结束。
如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。
总结if和switch语句很像。
具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而是符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
2.6.3循环结构
代表语句:while ; do while ; for
while语句
格式:
while(条件表达式值为true)
{
执行语句;
}
do while语句
格式:
do
{
执行语句;
}
while(条件表达式值为true);
while与do while的区别:
while:先判断条件,只有条件满足才执行循环体。
do while:先执行循环体,在判断条件,条件满足,再继续执行循环体。
简单一句话:do while:无论条件是否满足,循环体至少执行一次。
注意:循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false值
for语句:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
1,变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。
for语句执行完毕。该变量在内存中被释放。
2,for和while可以进行互换。如果需要定义循环增量。用for更为合适。
总结:什么时候使用循环结构?当要对某些语句执行很多次时,就使用循环结构。
无限循环的最简单表现形式。
for(;;){} //条件表达式默认是true。
while(true){}
2.6.4其他流程控制语句
Break语句:应用范围:选择结构(switch)和循环结构。
Continue语句:应用于循环结构。
注:a、这两个语句离开应用范围,存在是没有意义的。
b、这两个语句单独存在时,后面不可以有语句,因为执行不到。
c、continue语句是结束本次循环继续下次循环。
d、标号的出现,可以让这两个语句作用于指定的范围。
2.7函数
2.7.1函数的定义
什么是函数?函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。
函数的格式:
修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,…)
{
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
类型参数:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
Return:用于结束函数。
返回值:该值回返回给调用者。
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
2.7.2函数的特点
定义函数可以将功能代码进行封装。
便于对该功能进行复用。
函数只有被调用才会被执行。
函数的出现提高了代码的复用性。
对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
注意:
函数中只能调用函数,不可以在函数内部定义函数。
定义函数时,函数的结果应该返回给调用者,交由调用者处理。
2.7.3函数的应用
两个明确
明确要定义的功能最后的结果是什么?这是明确返回值类型。
明确在定义该功能的过程中,是否需要未知内容参与运算。这是明确参数。
函数的作用:
1)、用于定义功能。
2)、用于封装代码提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
2.7.4函数的重载:
重载的定义是:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便于阅读,优化了程序设计。