------- 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我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须识别才可以。这就是计算机语言。

2java语言概述

   2.1SUN(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应用程序开发。

       J2SEJava 2 Platform Standard Edition)标准版

是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发,比如java版的扫雷。


       J2ME(Java2 Platform Micro Edition)小型版

是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

       Java5.0版本后,更名为JAVAEEAVASEJAVAME

   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环境变量时,需要注意的情况:

如果没有定义环境变量classpathjava启动jvm后,会在当前目录下查找要运行的类文件;

如果指定了classpath,那么会在指定的目录下查找要运行的类文件。

但是是否还会在当前目录找吗?两种情况:

           1):如果classpath的值结尾处有分号,在指定路径中没有找到运行的类,会默认在当前目录再找一次。

           2):如果classpath的值结果出没有分号,在指定的路径中没有找到运行的类,不会再当前目录找。

一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。

清空:set classpath=

       setclasspath=.;c:\   表示当前路径和c盘下。

       pathclasspath的区别:path先在当前目录下查找,未找到后才在环境变量中查找。可执行文件用pathjava的执行文件用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、字符串常量:将一个或者多个字符用双引号标识。

       6Null常量:只有一个数值就是null

对于整数:java有四种表现形式。

二进制、十进制、八进制(012)、十六进制(0xff)。

十进制——>二进制。对十进制数进行除2运算。

二进制——>十进制。对二进制数乘以2

其他进制转换。先转换成二进制然后再转成相应的进制数。

八进制是3个二进制位代表一个八进制位。

十六进制是4个二进制位代表一个十六进制位。

负数的二进制表现形式:该数的二进制取反再+1。取反就是将二进制1变成00变成1

负数的二进制位的最高位是1

   2.4.2变量的概念:

占据着内存中的某一个存储区域;

该区域有自己的名称(变量名)和类型(数据类型);

该区域的数据可以在同一类型范围内不断变化;

为什么要定义变量:

用来不断的存放同一类型的常量,并可以重复使用;

使用变量注意:

变量的作用范围, 初始化值

定义变量的格式:

数据类型变量名 =  初始化值;

注:格式是固定的,记住格式,以不变应万变。

作用范围:定义开始到定义它的代码块结束;

同一范围内,不允许多个个局部变量命名冲突。

什么时候定义变量?只要是数据不确定的时候,需要对数据进行存储时,就定义变量。

   2.4.3数据类型:

       1):基本数据类型:byteshortintlongfloatdoublecharboolean

       2):引用数据类型: 数组、类、接口。

黑马程序员——java基础篇_第1张图片

wKioL1M6M3fD9mDZAACgtNye-Ew118.jpg

wKiom1M6M6CB_WeMAAB1zfpe-zA166.jpg

wKioL1M6M3jBx2QfAAByE1gRCVo076.jpg

   级别从低到高为:byte,short,char int long float double,其中byteshortchar之间不会相互转换,他们在计算时首先会转换为int类型。boolean 类型是不可以转换为其他基本数据类型。

自动类型转换:从低级别到高级别,系统自动转的;

强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;

2.5运算符号:

   1)、算术运算符。

       +-*/%   %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。-13%5=-313%-5=3,取模时结果的正负号看左边被模数。

       +:连接符。“ha+ha”结果为:haha,字符串数据跟任何数据使用+号相连接,结果都会变成字符串。

       ++--:自增、自减。b=a++b=aa++a先给b赋值后自增。b=++aa++b=aa先自增后赋值给b

转义字符:通过\ 来转变后面字符或者符号的含义。

       \n:换行; \b:退格;\r:按下回车键;\t:制表符。

       Window系统中,回车符是由两个字符表示\r\nlinux系统中用\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语句的两种情况:遇到breakswitch语句执行结束。

如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。

总结ifswitch语句很像。

具体什么场景下,应用哪个语句呢?

如果判断的具体数值不多,而是符合byte short int char这四种类型。

虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

其他情况:对区间判断,对结果为boolean类型判断,使用ifif的使用范围更广。

   2.6.3循环结构

代表语句:while do while for

       while语句

格式:

       while(条件表达式值为true)

       {

执行语句;

       }

       do while语句

格式:

       do

       {

执行语句;

       }

       while(条件表达式值为true);

       whiledo while的区别:

       while:先判断条件,只有条件满足才执行循环体。

       do while:先执行循环体,在判断条件,条件满足,再继续执行循环体。

简单一句话:do while:无论条件是否满足,循环体至少执行一次。

注意:循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false

       for语句:

       for(初始化表达式;循环条件表达式;循环后的操作表达式)

                          {

执行语句;

                          }

       1,变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。

       for语句执行完毕。该变量在内存中被释放。

       2forwhile可以进行互换。如果需要定义循环增量。用for更为合适。

总结:什么时候使用循环结构?当要对某些语句执行很多次时,就使用循环结构。

无限循环的最简单表现形式。

                for(;;){}  //条件表达式默认是true

                while(true){}

   2.6.4其他流程控制语句

       Break语句:应用范围:选择结构(switch)和循环结构。

       Continue语句:应用于循环结构。

注:a、这两个语句离开应用范围,存在是没有意义的。

                b、这两个语句单独存在时,后面不可以有语句,因为执行不到。

                ccontinue语句是结束本次循环继续下次循环。

                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函数的重载:

重载的定义是:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。

特点:与返回值类型无关,只看参数列表。

好处:方便于阅读,优化了程序设计。