------- 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