文章分类 - 黑马程序员学习笔记
黑马程序员学习笔记
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 面相对象设计原则:谁拥有数据,谁就提供操作数据的方法。 实例分析:人在黑板上画圆。 可以抽象出三个对象,人、黑板、圆。那么谁提供画圆的方法?应该是圆,因为画圆需要圆心和半径,它们都是圆的属性,所以应该有圆来提供操作圆心和半径的方法,所以画圆的方法应该有圆这个对象来提供。 关于这道面试题,解题关键在于这张图,和交通灯的管理规则。当然上图的情况并不是唯一绝对的,比如S2N是在靠右的那条车道,S2E的灯总是绿灯的状态,如果S2N是靠左的那条车...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 代理模式有一个要点就是代理类的要与目标类有相同的接口。 jvm有动态创建类的api,但使用jvm动态创建类需要指定一个接口。可以使用CGLIB开源库可以无需指定接口二去动态创建类。 aop主要靠代理模加动态创建类实现,Poxy类用于动态创建新类,而这个新类是在目标类的代理类。简单使用代码: Class clazzProxy1 = Proxy.getProxyClass(Collecti...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- java类被加载器加载,加载器也是一个java类,叫类加载器。java中有三个类加载器,成父子关系,而且如果我们要定义一个自己的类加载器必须指定一个父加载器。类加载器之间的父子关系和管辖范围图:知识点1:类加载器的委托机制当java虚拟机加载类时,到底用哪个类加载器?◇首先当前线程的类加载器去加载线程中的第一个类◇如果类A引用了类B,那么java虚拟机将使用加载类A的类加载器去加载类B◇还可以直接调用C...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ----------------------Jdk1.5的集合类在希望你在定义集合时,明确表示你要向集合中装哪种类型的数据,无法加入指定类型以外的数据。ArrayList<Integer> c=new ArrayList<<Integer>();c.add(“abc”);//编译报错 泛型是提供给java编译器使用的,让编译器挡住程序的非法输入,对于参数化的泛型,getClass返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的信息,只要跳过编译器,就可以往泛型集
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 个人理解注解类似c/c++里的预编译,都是编译时候要做的一些动作(java新特性),但java里的注解跟预编译是有很大的不同的。注解相当于一种标记,加了注解相当于加了某种标记,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记去做相应的事情。标记可以加在类,方法,包,字段,方法参数及局部变量上。 //基本的三个注解 @...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- JavaBean 是一种具有特定规格的类,主要作用为传递数据,所以其规格是围绕类的属性,为每个属性提供get和set方法。需要注意的是通过内省来操作javaBean对象的。使用内省的时候是通过对象的属性名来设置和获得属性值,而属性名的命名规范是与get和set方法名相关联的,在方法名里get之后的字符串为属性名,而不管这个方法操作的属性成员在定义的时候是用的什么名称(标识符)如:getage()(retur...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 在java程序里,要加载配置文件的时候或任何需要用到路径的时候不要使用相对路径,因为相对路劲是相对当前工作目录,但当前工作目录不是固定不变的,所以要用绝对路径,但不应该在代码里写死,应该用代码在运行时拼接出来。 除了直接拼接绝对路径,如果配置文件与类文件在同一个目录可以通过类加载器的getResouceAsStream(“文件名”)方法获取。也有相对和绝对之分,如果参数字符串以‘/’开头表示绝对...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- hashcode是计算对象hash值的方法。实现hashcode的作用,在于如果你的对象要支持存在hash集合中那这个hashcode是需要的。原因是hash集合添加对象时先计算对象的hash值,然后根据hash值查找看有没有相同的对象有就不添加。如果类没有实现hashcode那添加时计算的hash值是与内存地址相关的,这样两个逻辑上相等的对象,hash值不等也被认为不相同,而被添加,这样hash集合里就存在两个...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 反射的基础是Class类,在面向对象的世界里任何事物都是一个对象,可以抽取相类似事物的共性,创建一个类。当然java里的class也是一类事物,描述它的是java里的Class类。 java里每条代码都会编译成一条字节码,所以每定义一个类当然这个类最终也是通过一串字节码表示。所以每个类都有一个class成员变量,这样Class类的使用是这样的一种方式, 如:Class cls1 = String.clas...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- java里枚举的意义跟c/c++里一样,但java里枚举类型为类,值为对象,有一些公共方法和静态方法。 使用举例: //自定义构造函数 public enum WeekDay{ SUN,MON,TUE,WED,THI,FRI,SAT; private WeekDay(){}//要自己定义构造方法,必须使用...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 装箱:把基本数据类型装成java类(被托管?)。 拆箱:把java类拆成基本数据类型(取消托管?)。 java新版本增加了自动装箱拆箱的特性,使得java基本类和基本数据类型可以无需转换直接参与计算。如: Integer iObj = 3 //自动装箱。 system.out.println(iObj + 12);//自动拆箱。 在较早版本中不支持自动装箱拆箱,以上两句语句是错误的。知识点1: 在装箱时,将基本数...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- java语言在程序编译后生成的不是某种cpu指令码,而是java独有的字节码(byte- code).java字节码运行在java虚拟机上。java虚拟机类似一个小巧而高效的cpu。java虚拟机底层的运行系统把字节代码转换成实际的硬件调用。这里要注意一点的是,java虚拟机未必非要运行在操作系统之上。它的下面可以直接是各种cpu芯片。 每一种操作系统的java解释器是不同的,但java虚拟机是相同的,这是j...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 加载一个类时,它的静态初始化代码被执行。静态初始化代码段与静态变量的初始化同时进行,它们按词法顺序执行。例如,一个类c的声明如下:class c{ static int a=1; static { a++; b=7;}B static b=2;}当c被加载时,按以下顺序执行: *a置为1。 *静态初始化段执行,a置为2,b置为7。 *b置为2. 如果静态初始化代码引用了其他未...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 指针是c、c++程序最容易出错的地方,程序崩溃大部分原因在于指针操作bug,往往出错了很难定位,例如有一段c程序: /**上面有若干行c代码**/ int *p; p = (int *)malloc(10*sizeof(int)); for(i=0;i<end; i++) //end是一个变量 *p++ = 0;/**下面有若干行c代码**/ ....... ...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 经过了解总结java语言关键词为,简单(与c_c++比)、分布、解释、健壮、安全、跨平台、可移植、高性能、多线程、动态。 似乎程序设计语言的有点,java都占全了。实事求是的讲,的确还有一个特点就是java的运行速度比较慢,这往往是解释性语言难以拜托的阴影。但在java的应用领域里,这点显然不是关键考虑的因素。 java形式上与c/c++极为相似。但为了保证语言的简单性,java设计者们删除了c和c++中的许...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ----------------------1.java api System.getProperties()方法该方法返回一个Properties对象,这个对象里存储的是java虚拟机启动时系统的基本资料,如操作系统类型(windows、linux..),系统使用语言,系统默认字符集等。当java开发跨平台代码时常常需要根据运行程序的操作系统类型做一些特定操作,就可以通过System.getProperties()返回的对象检查系统类型。 2.java api R...
阅读全文
摘要:----------------------android培训、java培训、期待与您交流! ---------------------- 这篇日记,是看完第一个视频后写的!如果能加入黑马那将会很有意义! 以前主要用c++开发,也用过asp.net开发过简单的web站点,但恰恰java从来没接触过。但不是说科学只是一层窗户纸嘛,那编程相对起来,更要hold住啊,又不是说学编程主要学的是编程思想,不在于具体某中语言。所以受前辈大牛们的鼓励,对学java我是毫无保留的自信着。 视频中提到api,看到有msdn之类的文档,而且类c语法,这些综合因素的作用下,倍感亲切!语言...
阅读全文

浙公网安备 33010602011771号