黑马程序员 面向对象的概念

------- android培训、java培训、java学习型技术博客、期待与您交流! ----------

《1》:面向对象是一种编程方法:

《2》:面向对象是一种思维方式::

《3》:面向对象是一种编程语言:

 

2.面向对象设计的最终极的目标就是要消除程序中的重复代码

3.什么是面向对象思维方式:

    a 首先确定谁来做,其次决定怎么做。

    b 首先考虑整体,其次考虑局部。

    c 首先考虑抽象,其次考虑具体。


Java概述

1.      人机交互的方式:

a)        图形化界面(GraphicalUser Interface,即GUI)

b)        命令行方式:通过敲入计算机的不同指令来控制计算机,完成一些命令

2.      常见的Dos命令

a)        dir,用来列出当前路径的所有文件和文件夹

b)        md,创建目录。

c)        rd,删除目录

d)        cd,进入指定的目录

e)        cd..,返回上一层目录

f)         cd\,退回到根目录

g)        del,删除文件

h)        exit,退出命令行

3.      Java的跨平台性,即通过Java语言编写的程序可以在不同的系统上执行,即一次编译到处运行。原理是在不同的系统中装入专门用于解释执行的java程序的JVM即可。最终就是生活中的语言翻译成机器语言,由计算机执行。

 

Java环境的搭建

1.        jdk和JRE的区别:

a)        JRE:Java运行环境(Java RuntimeEnvironment),只针对于可以运行的java程序

b)        JDK:java开发环境(java Developmentkit),其中包括开发工具和jre,给java开发者使用的

2.        境变量,即系统对外提供的可以进行具体指定的一些参数信息。参数信息中就有path等环境变量。

a)        Path的作用:用于记录应用程序的路径。

b)        Path的原因:便捷,将要执行的应用程序所在路径配置到系统中,下次在执行时有系统自动查找该应用程序

3.        量设置的三种方式

a)        一劳永逸的方式,即在系统环境变量或者是用户环境变量中找到path(在用户环境变量中没有path,可以新建path),在其值中添加Java的Java可执行的目录bin。如:Java装在D盘,添加的值是:path=D:\Java\jdk1.7.0_10\bin多个环境变量间用分号隔开。

b)        在环境变量中,可将Java的安装路径添加到自定义的参数名的值中。然后在path添加值是:%自定义的参数名%\bin。(此处自定义参数名建议改成JAVA_HOME

                        i.             如:自定义的参数名JAVA_HOME添加值是:D:\Java\jdk1.7.0_10

                      ii.             Path添加值是:%JAVA_HOME%\bin

c)        临时变量的配置方式(这种配置方式只在当前的dos命令行上有效,窗口关闭,配置失效):通过dos命令中set命令完成。几种set命令功能如下:

                        i.             set:用于查看本机的所有环境变量的信息

                      ii.             set 变量名:查看一个具体环境变量的值

                     iii.             set 变量名=:清空一个环境变量的值

                     iv.             set 变量名=具体值:给给定的变量名定义具体值

                      v.             set 变量名=新值;%具体值%:给已存在的具体值添加新值

4.        classpath的配置的三种方式(不建议配置)

1)  在环境变量中添加参数名为classpath,其值是java程序的class文件存放位置,不建议这种配置方式

2)  第二种配置方式同以上path第二种配置方法

3)  第三种配置方式同path第三种配置方法

5.        注意:它的作用在于明确jvm的找寻类文件的路径,如果不定义,默认是当前路径。在定义classpath时,最后结尾处建议不要加分号。当出现类找不到的情时,要考虑是否是classpath配置出现了问题。

 

Java的第一个小程序(HelloWorld)

程序如下:

class Demo

         {

                   publicstatic void main(String[] args)

                   {

                            System.out.println("HelloWorld!");

                   }

         }

 

编写过程

1.        class Demo:用class关键字定义了一个类名为Demo的Java类。

2.        public static voidmain(String[] args){}:主方法(主函数),是一个固定格式,作用是保证所在类的独立运行

3.        System.out.println("HelloWorld!");:输出语句,将括号中的数据显示到控制台上2.  java程序的执行

4.        在dos命令行上的编译命令:javac Demo.java

2)  在dos命令行上的执行命令是:java Demo

5.        执行的常见错误问题

1)   编译时期:代码写错;出现中文;找不到文件。

2)   运行时期:没有主方法;找不到这个类。

6.        编写Java程序去解决问题的基本思路

1)   明确需求

2)   明确思路

3)  明确步骤(如果代码很熟,此步可以省略)

7.        明确代码

8.        其实代码无非就是思想的一种体现形式而已。写代码先写中文需求的基本动作,再去实现代码编写。强调思想很重要,代码亦很重要。

9.        例如,上面HelloWorld的基本思路:

a)        需求:写一个hello world小程序,让控制台显示hello world字样。

b)        分析(思路)

1,  应该有个类。对!

2,  这个类还要运行。所以需要一个main方法。是的!

3,  运行时,还需要一个输出显示动作,哪还需要啥呢?哦,原来需要一个输出语句。

c)        步骤(用代码去体现思路)

1,  class定义一个类。

2,  定义固定格式的main方法。

3,  在主方法中定义个输出语句。

d)        实现:

1)    编写具体的代码。

 

通过编译和运行来测试代码。

 

Java语法基础

1.        关键字,将具体的单词赋予了特殊的含义,关键字都是小写的。如:class就是来定义类的关键字。

2.        标识符,用于在程序中自定义的名称

3.        命名规则:只能在0-9.a-z,A-Z,_,$

4.        注意:数字不可以开头,不可以使用关键字

a)        注释,用来注解说明程序和调试程序的作用

                        i.             单行注释://

                      ii.             多行注释:/* 注释的内容 */

                     iii.             文档注释:/**程序的说明内容*/

5.        常量和变量。

1)        常量,表示不能改变的值。

2)        变量,表示在该区域的数据可以在同一类型的范围内不断变化。

定义格式:数据类型 变量名=常量。(=代表赋值的意思,而不是相等)

6.        进制转换,进制越大,表现形式越小。

1)        二进制,是用0和1表示。

2)        八进制,每一位对应二进制的是三位,是以0开头的。例二进制101,变成八进制是5.

3)        十六进制,每一位对应的二进制的四位,用0-9,a-f,A-F表示。

4)        十进制,二进制的每一位对应十进制。

7.        八种基本数据类型

1)         

基本类型

位数

字节

范围

byte

8

1

-128à127

short

16

2

-32767à32768

int

32

4

 

long

64

8

 

2)        浮点类型

float

32

4

 

double

64

8

 

3)         字符型,char,16位,2字节

4)          boolean,只用true和false两个值表示。

8.        基本数据类型之间换算注意

1)        当整数是long类型,应在常量后面加上l或L,一般整数默认的int类型

2)        当浮点类型是float时,应在后面加上f或者F。浮点型默认的都是double类型。

3)        字符可以包含中文,一个字符是两个字节,而一个中文是两个字节

4)        在java不允许(true+1)的换算,在javascript中允许

5)        字符串和任何基本数据类型用+运算,都是表示的是连接符,最后运算的结果还是一个字符串。

总结:当右边是常量时,编译器会做判断和自动转换,超出范围就会报错,没超出范围就转换。当右边是变量时,就会报错。

9.        制表符:制表符(\t),换行符(\n),unicode表(\u)

运算符

1.        当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大那个变量类型,比如,参与运算的变量中,有整型int,有双精度浮点型double,有短整型short,那么最后的结果就是double

2.        取模运算符:使用%表示,既是数学中说的余数

int a=5;

int b=3;

上面代码的运行结果是2,因为5除以3结果是1余2.

再通过以下代码,我们总结一些规律。

1)  int a =5;

int b=-3

 

int c=a%b

被除数是5,那么取模的结果是2

2)  int a=-5;

int b=3;

 

int c=a%b;

被除数是-5,那么取模的结果是-2

3.        取模的规律总结:取模的结果符号永远与被除数的符号相同,即符号结果看左边。它常用于切换

4.        a++与++a的原理

a)        b=a++它相当于temp=a,a=a+1,b=temp;

b)        b=++a它相当于a=a+1,b=a。

5.        +=的作用:a+=2相当于a=a+2的简化形式。

注意:short a=4;a=a+5(错误);a+=5(正确)。+=符号是一个赋值运算,具备自动转换。

6.        有如下代码:

  int a=1;

  int b=2;

double c=(double)a/b

上面的代码中,a与b都是整型,但是通过(double)a这种转换将a转换为一个匿名的变量,该变量的类型是double,但是要注意:a本身依旧是int类型,而不是double类型,这样,(double)a/b就是double类型除以int 类型,结果自然是double类型

7.        逻辑运算符:

1)  逻辑与:使用&&表示,逻辑与是个双目运算符(即有两个操作数的运算符),只有当两个操作数都为真的时候,结果才为真,其余情况结果均为假.逻辑与表示的是并且的意思

2)  逻辑或:使用||表示,逻辑或也是个双目运算符,只有当两个操作数都为假的时候,结果才为假,其余情况结果均为真。逻辑或表示或者的意思

8.        运算符中还有一种叫做短路特性,下面总结一下逻辑运算符的短路特性:

1)  逻辑与:如果第一个操作数为false,那么结果肯定就是false,所以在这种情况下,将不会执行逻辑与后面的运算了

2)  逻辑或:如果第一个操作数为true,那么结果肯定是true,所以在这种情况下,将不会执行逻辑或后面的运算了,既也发生了短路。

9.        条件运算符:即也叫做三元表达式,其形式为type=a?b:c,用具体化形式表达就是intd=2<1?3:4;

使用弊端:三元运算符可以理解为是if-else语句形式,但它运算完必须有结果。

错误用法:a==b?true:false

正确写法:直接写a==b;

10.    位运算符,进行快速运算,缺点是只能做二次冪运算。

a)        左移<<,运算技巧:3*2(位数),如3<<2à3*2*2=12

b)        右移>>,运算技巧:6/2(位数),如6>>2à6/2/2=1

c)        >>和>>>的区别:>>高位出现空位是,原高位是什么,就补什么;>>>无论高位是什么,都补0.

d)        异或,即^。一个数据异或另一个数据两次,结果还是该数据。技巧,在二进制1代表的就是true,0是false。

流程控制语句

1.        switch语句中break语句中break是可选的,但在绝大多数情况下,如果没有break、,程序的逻辑就会发生错误,因此,通常情况下,都需要加上break。以及switch中的变量类型只能为四种:byte,short,int ,char。jdk5.0出来枚举,jdk7.0出来String。Case是没有顺序的,但是执行是从第一个case开始,所有case不满足,执行default。结束特点是遇到break或者执行到大括号,选择语句结束。

2.        由于swtich与if的相似性,开发中,使用谁呢?当对具体的几个值进行判断的时候,可以使用if,也可以使用switch,建议此时使用switch。当if的功能还有,它还可以对区间进行判断,还可以对运算结果是boolean类型的进行判断,所以if的应用较多。这个swicth不支持。

3.        最简单的无限循环三种方式

a)        While(true){ code…};

b)        for (;;){code…}

4.        break语句:常用在switch语句和循环语句,特点是结束当前的循环。

5.        continue:只能使用在循环语句,特点是结束本次循环。

6.        return语句查看函数笔记

数组

1.        电脑内存的五片区域

a)        寄存器,提供给cpu使用的

b)        栈内存,存储的都是局部变量(放在方法里都是局部变量),一旦使用完,立刻被释放

c)        堆内存,存储的都是实体(对象,就是用于存储很多数据的堆内存空间),成员变量。

                        i.             堆内存中每一个实体都有自己的地址值

                      ii.             堆内存中每一个变量都有默认初始值,不同类型的初始值不同。

基本类型:int=0,double=0.0,char=’\u000’(空格),Boolean=false,

引用类型:Object =null。

                     iii.             当实体被视为垃圾时,会随时被垃圾回收器(Java的垃圾回收机制gc)。栈的内存是实时释放。

2.        length关键字:获取数组的元素的个数。

3.        数组常发生的异常:

a)        ArrayIndexOfBoundsException:数组越界异常。发生在运行期,当访问到不存在的角标时,就会发生异常

b)        NullPointerException:空指针异常。当引用没有任何实体指向时,还在使用其他操作其操作实体,就会发生该异常。

4.        数组常操作类(Arrays)常用的方法:

a)        Static void sort(类型[] a): 根据元素的自然顺序对指定对象数组按升序进行排序

b)        半分查找(有序的数组):static类型 binarySearch(类型[] a, 类型 key)  :使用半分搜索法来搜索指定的 int 型数组,以获得指定的值。使用这种方式开发效率高。

5.        转换进制常用的方法:

a)        static String toHexString(inti) :以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。

b)        static StringtoBinaryString(int i):以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。

c)        static String toOctalString(inti):以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。

6.        二维数组的默认值是null,二维数组存放的是一维数组的地址值。

Int[][] arr=new int[3][2];即二维数组中有3个一维数组,每个一维数组有2个元素。

7.        地址值的解析:[[@ef7d2à数据类型@哈希值

8.        数组常见误区:

a)       下面哪个数组定义是错误的。

b)       并对错误的答案加上单行注释,写出错误的原因。

c)       A,float[]=newfloat[3]; //没有使用数组名

d)       B,float f2[]=new float[];//没有给定数组长度

e)       C,float[] f1=new float[3];//true

f)        D,boolean[] b={"true","false","true"};//因为“true“是字符串的类型

g)       E,double f4[]={1,3,5}; //true

h)       F, intf5[]=new int[3]{2,3,4};  //不能在中括号中指定数组长度

i)         G,float f4[]={1.2,3.0,5.4};//float的默认类型是double,所以每个数组都要加上f或者F

 

 

 

 

 

 


 

你可能感兴趣的:(黑马程序员 面向对象的概念)