随笔分类 -  java基础

摘要:对LinkedList使用普通的for循环,这是一种非常糟糕的做法。这是数据结构的问题。 ArrayList和LinkedList使用普通for循环速度的测试: 不断增大LIST_SIZE,我用表格表示一下运行结果: 从运行结果我们看到,按倍数增大List容量,ArrayList的遍历显得比较稳定, 阅读全文
posted @ 2017-03-16 12:42 TP000 阅读(383) 评论(0) 推荐(0)
摘要:socket socket是网络上运行的两个程序间双向通讯的一端,既可以接收请求也可以发送请求,利用它可以方便的编写网络上数据传递。 socket连接过程: 1.服务器监听 服务器socket并不定位具体的客户端socket,而是处于等待链接的状态,实时监控网络状态。 2.客户端请求 客户端sock 阅读全文
posted @ 2017-02-20 17:56 TP000 阅读(235) 评论(0) 推荐(0)
摘要:1.尽量用final修饰类和方法 final修饰的类不可以继承,final修饰的方法不可以被重写。指定了一个类是final的,那么它里面所有方法都是final的(不可以继承也就不存在重写)。java编译器会寻找机会内联所有final方法,内联可以提升效率。 2.尽量重用对象 对于String对象的使 阅读全文
posted @ 2017-02-17 18:40 TP000 阅读(657) 评论(0) 推荐(0)
摘要:权限解析 java有四种访问权限,private default protected public。 private:私有的,只有在自己的类中可以访问。 default:就是不加任何修饰符,允许在自己类中访问,也运行同包中访问。 protected:允许在自己类中访问,同包中访问,子类访问。 pub 阅读全文
posted @ 2017-02-16 17:02 TP000 阅读(206) 评论(0) 推荐(0)
摘要:重写需要满足几个原则 两同两小一大: 1.子类重写的方法名称和父类的相同。 2.子类重写的方法参数列表和父类的相同。 3.子类重写的方法中的返回类型小于等于父类方法中的。 4.子类重写的方法中的异常小于等于父类方法中的。 5.子类重写的方法的访问权限大于等于父类方法的。 第一二点不用证明(因为如果方 阅读全文
posted @ 2017-02-16 15:45 TP000 阅读(157) 评论(0) 推荐(0)
摘要:为什么要克隆 person1:name=aperson2:name=aperson2中name修改为bperson1:name=b 这就是没有克隆出现的问题,因为只是引用的赋值,它们指向同一对象,如果一个修改另一个也会影响。所以我们需要克隆一个对象,让它们指向不同的对象。 Object的clone( 阅读全文
posted @ 2017-02-15 19:47 TP000 阅读(262) 评论(0) 推荐(0)
摘要:连接mysql数据库,并且通过select语句获得结果。 两种方式加载驱动 1、Class.forName("oracle.jdbc.driver.OracleDriver"); 2、new oracle.jdbc.driver.OracleDriver(); 两种方法都可以。这个驱动自动向driv 阅读全文
posted @ 2017-02-15 17:59 TP000 阅读(128) 评论(0) 推荐(0)
摘要:Comparable Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 Comparable接口是内比较器,也就是自己参与比 阅读全文
posted @ 2017-02-15 16:26 TP000 阅读(198) 评论(0) 推荐(0)
摘要:为什么要自己定义类加载器 为什么我们要自定义类加载器?因为虽然Java中给用户提供了很多类加载器,但是和实际使用比起来,功能还是匮乏。举一个例子来说吧,主流的Java Web服务器,比如Tomcat,都实现了自定义的类加载器(一般都不止一个)。因为一个功能健全的Web服务器,要解决如下几个问题: 1 阅读全文
posted @ 2017-02-14 18:31 TP000 阅读(278) 评论(0) 推荐(0)
摘要:结果是 阅读全文
posted @ 2017-02-14 17:43 TP000 阅读(150) 评论(0) 推荐(0)
摘要:HashCode 然后讲下什么是HashCode,总结几个关键点: 1、HashCode的存在主要是为了查找的快捷性,HashCode是用来在散列存储结构中确定对象的存储地址的 2、如果两个对象equals相等,那么这两个对象的HashCode一定也相同,反过来不成立,只能说明两个对象在同一位置。 阅读全文
posted @ 2017-02-13 22:51 TP000 阅读(148) 评论(0) 推荐(0)
摘要:String和StringBuffer有什么区别? 1、String对象是不可变的,如果一旦修改了String对象的值,那么会隐性重新创建一个新的String对象并释放原来的对象。 而StringBuffer类是可修改的,如果想要在原字符串上添加,只要使用append方法就可以了,非常方便。 Str 阅读全文
posted @ 2017-02-13 15:16 TP000 阅读(160) 评论(0) 推荐(0)
摘要:jni:java的运行速度比c++慢,java无法直接访问操作系统底层,所以java提供jni来实现对底层访问。jni,java native interface。jni运行java使用其他语言编写的代码。 Native:被Native关键字声明的方法说明该方法不是以Java语言实现的,而是以本地语 阅读全文
posted @ 2017-02-13 14:57 TP000 阅读(230) 评论(0) 推荐(0)
摘要:什么是java的序列化和反序列化 java序列化就是把java对象转换为字节序列的过程。对于transient和static修饰的属性不会被序列化。原因:transient的作用就是这样,static是因为序列化作用的是对象,static修饰后是属于类的,所以没用。 java反序列化就是把字节序列转 阅读全文
posted @ 2017-02-10 18:36 TP000 阅读(222) 评论(0) 推荐(0)
摘要:java的反射机制 在运行过程中动态的获取信息和调用对象方法的功能称为java的反射机制。 通过反射可以获得类的属性,方法,父类,接口,包相关的信息。因为类在加载的时候,会在内存中生成一个代表这个.class文件的java.lang.Class对象,.class文件包含类的所有信息。 实例 clas 阅读全文
posted @ 2017-02-10 15:51 TP000 阅读(132) 评论(0) 推荐(0)
摘要:接口的优点和缺点 优点:解耦,增加代码的可扩展性。 缺点:子类实现接口,如果接口需要新增新方法,那么所有子类将不能编译通过,而需要重写新增的方法。 接口的访问权限 接口中的方法:只能是public abstract,如果不写public也是public的,不是default的。 接口中的属性:修饰只 阅读全文
posted @ 2017-02-09 17:56 TP000 阅读(171) 评论(0) 推荐(0)
摘要:运行的异常和一般异常的区别 异常分为两类:runtime exception(运行时异常)和checked exception(一般异常)。 一般的异常比如ioException,sqlException,编译器会强制我们写try catch。 而runtimeException是虚拟机掌管的。如果 阅读全文
posted @ 2017-02-09 16:37 TP000 阅读(167) 评论(0) 推荐(0)
摘要:枚举类 public enum Day { MON("星期一"), TUE("星期二"), WED("星期三"), THU("星期四"), FRI("星期五"), SAT("星期六"), SUN("星期七"); private String label; private Day(String lab 阅读全文
posted @ 2017-02-08 22:41 TP000 阅读(153) 评论(0) 推荐(0)
摘要:static的用法 1.修饰属性 2.修饰方法 3.修饰代码块 4.修饰内部类 static修饰的是静态资源,是类的各个实例共享的。 静态资源是类初始化的时候就加载的,而非静态资源是在new的时候才加载的。类的初始化是要早于类的new,Class.forName(“”)是加载类,加载静态资源。 所以 阅读全文
posted @ 2017-02-08 18:31 TP000 阅读(112) 评论(0) 推荐(0)
摘要:final的作用 1.final修饰的类不可以被继承。(最常见的就是String类) 2.final修饰的方法不可以被重写。 3.final修改的变量不可以被修改。(如果该变量是引用,那么要求的是引用不可以修改,可以修改引用里面的内容。也就是说必须还是指向原来指向的对象,但是对象里面的内容可以修改) 阅读全文
posted @ 2017-02-08 17:34 TP000 阅读(84) 评论(0) 推荐(0)