黑马程序员:java课程要点-面向对象

来源:互联网 发布:北京周末好去处 知乎 编辑:程序博客网 时间:2024/06/11 23:49

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


要点一:pathclasspath(类文件路径)各自的特点

 Classpath的配置(对java文件配置classpath):

1. Set Classpath=

清空classpath配置,编译和运行都在同一目录下运行时可以不配置classpath

2. 在未配置classpath的情况下,运行时系统会在当前目录下找

3. 如果配置classpath时:

Set classpath=c:\;   运行类文件时系统先在classpath的指定路径下找同名类文件, 未找到的时候再去当前目录下找同名类文件

Set classpath=c:\    运行类文件时只在classpath指定路径下找,没找到报错

4. set classpath=.;c:\;d:\   运行类文件时先在当前目录下寻找同名类文件,没找到再依次c盘和d盘寻找同名类文件,找到后运行类文件并停止查找,没找到报错

5.4.的情况下:

e:\>java HelloWorld   /*先在e盘中寻找HelloWorld.class文件(.;表示的部分),没 找到去c盘找,没找到去d盘找*/

Path的配置(对可执行文件配置path):

1.与classpath的查找顺序相反,先在当前目录下寻找,没找到再去path所指路径寻找

2. e:>set path=c:\

    e:>HelloWorld.exe /*先在当前目录e盘中寻找HelloWorld.exe,没找到去path 所指路径寻找*/


要点2:进制转换

    System.out.println(Integer.toBinaryString(6));/*610进制转换成二进制*/

     System.out.println(ox3c);/*ox3c的十六进制转换成十进制*/


要点3:字符和运算符

  连接符:

字符串数据和任何类型的数据使用'+’都是相连接,结果都是字符串

System.out.println('"a="+a+",b="+b);    要使输出语句清晰直观有意义

    转义字符的使用:

\n=换行     \t=制表符 \b=退格键

\r=按下回车键,window系统,回车符由两个字符来表示\n\r

System.out.println("\"hello\"");  输出"hello"

System.out.println("\\hello\\");   输出\hello\

char a='\n';     

Char a='';

Char a='\\';


要点4:相近运算符之间的区别

         +和+=的异同:

S=s+5;    计算两次,先加(int类型),再赋值给sshort类型),容易丢失精度, 编译失败

S+=5;     计算一次,在范围之内,自动完成强转操作,编译通过!

      逻辑运算符:

&&&的区别,当第一个表达式值为false的时候,&&不计算第二个表达式最终结果直接为false,而&还会计算第二个表达式;

和 || 的区别,当第一个表达式为true的时候,||不计算第二个表达式最终结果直接为true,而|还会计算第二个表达式;

      >>>和>>:

>>>无符号右移,最高位用0补;

>>最高位右移的时候,原最高位是什么就用什么补,是00补齐,是11补齐。保证原来数字的正负!

      异或’^‘:

异或“^:异或两次结果不变,异或一次相当于加密!再次异或同一个数相当于解密!

要点5

If else结构的简写形式:变量=(条件表达式)?表达式1:表达式2
简写的弊端是:必须要有一个结果
        
for语句之中定义的变量作用范围只在该for语句之中,for循环结束该变量内存空间被释放;
无限循环的表现形式:
for(;;){}
While(true);

Breakcontinue使用时可以给循环加上标号,从而跳出指定标号的循环或者switch

要点6:如何定义函数?

1.定义函数之前,先明确该函数所要实现的功能以及该功能的运算结果
2.明确该函数功能是否需要未知内容参与运算

什么时候用重载?
当定义的功能相同,但是内容不同。那么就定义一个函数名称以表示功能,方便阅读,而通过参数列表来区分多个同名函数。


要点7:数组

元素类型[] 数组名=new 元素类型[元素个数或者数组长度];
int[] x = new int[3];     //x是数组类型,int表示该数组之中的元素是int类型
X[0]=1;
X[1]=3;
int[] arr=new int[]{3,2,4,5,6};
Int[] arr={3,2,4,5,6};//数据明确的情况下

内存结构:   每一片内部数据的处理方式不一样
栈:数据使用完毕,自动释放——局部变量都在栈之中存贮,方法中,for循环中的变量。上面的数组类型变量x就是在栈中存储的,x的值等于数组首地址(哈希值)。
堆:new出来的对象,数组都是实体,都在堆中,默认初始化值0。如上式中的new int[3]。运行的时候才会在堆内存中分配空间,编译只检查语法

x=null;   x不再指向数组,垃圾回收机制后回收垃圾无用数组。

要点8

排序方法,java自带的Arrays.sort(arr);
冒泡排序(bubbleSort),选择排序(selectSort
希尔排序,在栈内存中进行数据的比较,在堆内存中进行的置换比较少,在数据比较多的情况下效率高!
折半查找的前提条件是数组是有序数组

插入某数,相当于查找该数在数组中的角标,如果数组中有该数,返回其下脚标, 即是要插入位置的下脚标;不存在,返回min值,即是要插入位置的下脚标;


要点9

引用类型的初始值是null,未初始化的二维数组的第一层内的值是nullarr[0]=null;
Int[][] arr=new int[3][];//规则数组
Arr[0]=new int[3]; 
Arr[1]=new int[1];

Arr[2]=new int[2];//不规则数组,arr[0]就是int[3]的地址

要点10:面向对象和面向过程

强调对象,强调动作
名词提炼法:名词提炼出来封装对象
人开门——
人:
门:
{
开()操作门轴门把;
}

面向对象的三个特征:封装,继承,多态。
开发过程就是找合适的对象,没有就创建一个对象。

找对象,建立对象,使用对象,维护对象的关系。


类和对象的关系:

现实生活中的对象:张三,李四

想要描述:抽取对象的共性内容,对具体的抽象。

描述的时候:其共性有——姓名,年龄,性别,学习java的功能。

java中,描述就是class定义的类

具体对象就是java在堆内存之中的new建立的实体。数据很多,数据多了想数组一样在堆之中存贮的实体。

类就是:对现实生活中事物的描述。

对象:就是这类事物,实实在在存在的个体。New操作的产生于堆之中的实体


封装数据,数据包括
成员变量和局部变量:
成员变量作用于整个类中,局部变量作用用函数中或者语句中。
成员变量存在于堆之中,局部变量存在于栈内存中

在本类中创建主函数;
匿名对象:当对对象的方法值调用一次时,可用匿名对象来完成,这样写比较简化
如果对一个对象进行多个成员调用,必须给这个对象起个名字
使用方式二:可以将匿名对象作为实际参数进行传递。

强引用,弱引用,虚引用,软引用——优化内存;



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

原创粉丝点击