----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<ahref="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
黑马程序员__关于自己的一些学习死角的再学习(基于老毕的java基础视频)
在学习配置环境变量时,本人也就是会弄,但是从没认真思考过,比如为什么要配置,甚至说path和classpath区别是什么?其实这些一想就清楚,只是可能是我视觉死角吧!
配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
其实classpath就是class文件的环境,path就是javac的
环境变量的配置:
永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;(这时classpath和path的一个区别)
如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
运算符号:(不是什么难点,记清楚就行)
%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
^:异或:和或有点不一样。(一个数异或同一个数两次结果就还是那个数)
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
>>>(无符号右移):搞清楚他与>>的区别
无符号右移无论最高位是什么,右移后空位用0补,而>>是最高位是什么它就补什么
在switch中如 果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
当while和for可以进行互换时建议使用For循环,因为for循环完毕,变量在内存中释放。
(老外写代码就尽量都写for循环,节省资源)
关于break和continue:两者单独存在时底下都不可以定义其他语句,因为根本执行不到,编译会失败。(所以出现考官问这种情况会出现什么结果时,得回答编译失败)
而且break只能跳出当前循环,要跳出外部循环,只能给循环起个标号
标号 for(){}
函数:定义一个函数要明确:返回类型和参数列表
作用:定义功能,封装代码提高复用性(函数中只能调用函数,不能定义函数)
函数名:对功能进行标示,方便调用; 增加代码的阅读性(通过名称就可以明确函数功能,这一点我要注重学习)
如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。
栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );
只要数据运算完成所在的区域结束,该数据就会被释放。
堆:用于存储数组和对象,也就是实体。就是用于封装多个数据的。
1:每一个实体都有内存首地址值。(十六进制)
2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。
3:垃圾回收机制。
面向对象(张孝祥老师讲过一句经典的话:谁对外提供数据,谁就对外提供这些数据的操作方法)
匿名对象
1:当对方法只进行一次调用的时候,可以使用匿名对象。
2:当对象对成员进行多次调用时,不能使用匿名对象。必须给对象起名字。
类中怎么没有定义主函数呢?
注意:主函数的存在,仅为该类是否需要独立运行,如果不需要,主函数是不用定义的。
主函数的解释:保证所在类的独立运行,是程序的入口,被jvm调用。
成员变量和局部变量的区别:
1:成员变量直接定义在类中。
局部变量定义在方法中,参数上,语句中。
2:成员变量在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
3:成员变量存在于堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。
构造函数特点:
1:该函数的名称和所在类的名称相同。
2:不需要定义返回值类型。
3:该函数没有具体的返回值。
记住:所有对象创建时,都需要初始化才可以使用。
构造函数和一般函数有什么区别呢?
1:两个函数定义格式不同。
2:构造函数是在对象创建时,就被调用,用于初始化,而且初始化动作只执行一次。
一般函数,是对象创建后,需要调用才执行,可以被调用多次。
什么时候使用构造函数呢?
分析事物时,发现具体事物一出现,就具备了一些特征,那就将这些特征定义到构造函数内。
构造代码块和构造函数有什么区别?
构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块。只要对象一建立。就会调用这个代码块。
注意:用this调用构造函数,必须定义在构造函数的第一行。因为构造函数是用于初始化的,所以初始化动作一定要执行。否则编译失败
静态函数几个小点:
被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。
静态随着类的加载而加载。而且优先于对象存在。
静态方法只能访问静态成员,不可以访问非静态成员。
因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。
静态方法中不能使用this,super关键字。
因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。
成员变量存在于堆内存中。
静态变量存在于方法区中。
成员变量随着对象创建而存在。随着对象被回收而消失。
静态变量随着类的加载而存在。随着类的消失而消失
静态代码块、构造代码块、构造函数同时存在时的执行顺序:静态代码块à 构造代码块 à 构造函数;
----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<ahref="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------