您的位置:首页 > 职场人生

黑马程序员——Java基础语法

2015-07-31 11:06 417 查看
  ——- android培训java培训、期待与您交流! ———-

一、java概述

java是Sun公司(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。是简单易学、完全面向对象、安全可靠、跨平台(即与平台无关)的编程语言。

java的跨平台性:通过java语言编写的应用程序在不同的系统平台上都可以运行。

跨平台的原理:在运行java应用程序的操作系统上安装一个java虚拟机(JVM 即Java Virtual Machine),由JVM来负责java程序在该系统中的运行。

java语言的三种技术架构:

(1)JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;

(2)JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;

(3)JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;

java语言环境:

1,JRE(Java Runtime Environment)包括java程序所需的类库和JVM(java虚拟机)。如果想要运行一个java程序,只需安装JRE。

2,JDK(Java Development Kit)提供给java开发人员使用的,包含java的开发工具和JRE。

简单一句话,使用JDK开发完成的java程序,交给JRE去运行。

量3,配置环境变:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

环境变量的配置:

1)永久配置方式:我的电脑—属性—高级—环境变量 编辑path环境变量,在变量值开始处加上java工具所在目录,后面用“;”和其他值分隔开。

JAVA_HOME=%安装路径%\Java\jdk

path=%JAVA_HOME%\bin

2)临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin

特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。

classpath的配置:

1)永久配置方式:classpath=.;c:\;e:\

2)临时配置方式:set classpath=.;c:\;e:\

注意:在定义classpath环境变量时,需要注意的情况

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

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

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

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

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

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

4,javac命令和java命令

执行java程序是分两部分的:一个是编译,一个是运行。

javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。

java:负责运行的部分.会启动jvm加载运行时所需的类库,并对class文件进行执行.

一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

二、java语法基础

1,关键字:被赋予了特殊含义的单词,所有的字母都是小写。

保留字:还没有赋予特殊含义,但是准备日后要使用过的单词。

2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、A-Z、$、_

注意:

1),数字不可以开头。

2),不可以使用关键字。

java中严格区分大小写,在起名字时,为了提高阅读性,尽量使用有意义的单词。

java中的名称规范:

包名:多单词组成时所有字母都是小写。例:com.sun

类名接口名:多单词组成时,所有单词的首字母大写。例:DataInput

变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。例:getValue(),nextLine

常量名:所有字

3,注释

用于注解说明解释程序的文字

好处:提高了代码的阅读性

java中注释的格式:

(1)单行注释:

//注释文字

(2)多行注释

/注释文字/

(3)文档注释

/*注释文字/

4,常量:是在程序中的不能改变的数值。

5,变量:其实就是内存中的一个存储空间,用于存储常量数据。该空间有自己的名称(变量名)和类型(数据类型)

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

变量的作用域和生存期:

变量的作用域:

作用域从变量定义的位置开始,到该变量所在的那对大括号结束;

生命周期:

变量从定义的位置开始就在内存中活了;

变量到达它所在的作用域的时候就在内存中消失了;

java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。

数据类型:

1)基本数据类型:

整数类型:byte、short、int、long 默认是int

浮点类型:float、double 默认是double

字符类型:char

布尔类型:boolean

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

按精度排列级别从低到高为:

byte–> short–>int–>long–>float–>double

数据类型转换:

1)自动类型转换:从低级别到高级别,系统自动转的;long可以自动转float,反之则不行。

强制类型转换:把一个高级别的数赋给一个别该数的级别低的变量;

运算符号:

1)、算术运算符。

+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

+:连接符。

++,–

2)、赋值运算符。

= += -= *= /= %=

3)、比较运算符。

== != < > <= >=

特点:该运算符的特点是:运算完的结果,要么是true,要么是false。

4)、逻辑运算符。

& | ^ ! && ||

逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。

&: 只有两边都为true结果是true。否则就是false。

|:只要两边都为false结果是false,否则就是true

^:异或:和或有点不一样。

两边结果一样,就为false。

两边结果不一样,就为true.

& 和 &&区别: & :无论左边结果是什么,右边都参与运算。

&&:短路与,如果左边为false,那么右边不参数与运算。

| 和|| 区别:|:两边都运算。

||:短路或,如果左边为true,那么右边不参与运算。

5)、位运算符:用于操作二进制位的运算符。

&(与) |(或) ^ (异或) ~(取反)

“<<”(左移,相当于乘以2的移动的位数次幂)

“>>”(右移,相当于除以2的移动的位数次幂)

“>>>”(无符号右移)

6,语句。

(1)判断结构:if

三种格式:

1)if(条件表达式)

{

执行语句;

}

2)if(条件表达式)

{

执行语句;

}

else

{

执行语句;

}

3)if(条件表达式)

{

执行语句;

}

else if(条件表达式)

{

执行语句;

}

……

else

{

执行语句;

}

(2)选择结构:switch

格式:

switch(表达式)

{

case 取值1:

执行语句;

break;

case 取值2:

执行语句;

break;

……

default:

执行语句;

break;

}

工作原理:用表达式的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;

特点:

1)表达式结果类型:byte,short,int,char,String,枚举类型

2)default可以写在switch结构中的任意位置;程序先从第一个case开始执行,如果没有匹配的再执行default(无论default在什么位置都执行),有匹配的就从匹配的case开始执行,直到遇到break或者程序结束。

怎么选择if和switch?

当判断的具体数值不多时,可以使用if,也可以使用switch,但是建议使用switch,效率较高。

当判断数据范围,获取判断运算结果boolean类型时,需要使用if。

(3)循环结构

1)while语句

格式:

while(条件表达式)

{

循环体;

}

2)do while语句

do

{

循环体;

}while(条件表达式);

特点:无论条件是否满足,循环体至少被执行一次。

3)for语句

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

{循环体;}

执行流程:首先执行初始化表达式(只执行一次),然后判断循环条件,为真就执行循环体,然后在执行循环后的操作表达式,然后在判断循环条件,直到循环条件不满足就结束。

while和for可以进行互换。

区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。while循环使用的变量在循环结束之后还存在。

最简单的无限循环:

while(true){}

for(;;)

break和continue

break:作用于switch ,和循环语句,用于跳出,或者称为结束。

当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。

continue:只作用于循环结构,继续循环用的。

作用:结束本次循环,继续下次循环。

break和continue语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。

7,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数,也可以成为方法。

java中的函数的定义格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){

执行语句;

return 返回值;

}

当函数没有具体的返回值时,返回的返回值类型用void关键字表示。

如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。

return的作用:结束函数。结束功能。

如何定义一个函数?

函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:

1)明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。

2)明确在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。

函数的作用:

1)用于定义功能。

2)用于封装代码,提高代码的复用性。

注意:函数中只能调用函数,不能定义函数。

定义函数时,函数的结果应该返回给调用者,交由调用者去处理。

主函数:

1)保证该类的独立运行。

2)因为它是程序的入口。

3)因为它在被jvm调用。

函数定义名称是为什么呢?

答:1)为了对该功能进行标示,方便于调用。

2)为了通过名称就可以明确函数的功能,为了增加代码的阅读性。

重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。

重载的特点:当函数同名时,只看参数列表。和返回值类型没关系。

重载的好处:方便与阅读,优化了程序设计。

8,数 组:用于存储同一类型数据的一个容器。

好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。

格式:

1)元素类型[] 变量名 = new 元素类型[元素的个数];

例:int[] arr=new int[3];

2)元素类型[] 变量名 = {元素1,元素2…};

元素类型[] 变量名 = new 元素类型[]{元素1,元素2…};

例:int[] arr={1,3,5,7};

int[] arr=new int[]{1,3,5,7};

数组的内存结构:



java程序在运行时,需要在内存中分配空间。为了提高运算效率,对空间进行了不同区域的划分,因为没一片区域都有特定的处理数据的方式和内存管理方式。

java分了5片内存。

1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。

栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );

只要数据运算完成所在的区域结束,该数据就会被释放。

堆:用于存储数组和对象,也就是实体(就是用于封装多个数据的),通过new建立的实例都存放在堆内存中。

1:每一个实体都有内存首地址值。

2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。

3:实体不被使用时,会在不确定的时间内被垃圾回收机器回收。

二维数组:

格式1:

int[][] arr=new int[3][2];

定义了名称为arr的二维数组,二维数组中有3个一维数组,每个一维数组中有2个元素,一维数组的名称分别是arr[0],arr[1],arr[2].

内存结构:



格式2:

int[][] arr=new int[3][];

二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这3个一维数组进行初始化:

arr[0]=new int [3];

arr[1]=new int[2];

arr[2]=new int[2];

内存结构:



  ——- android培训java培训、期待与您交流! ———-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: