2019期末总结

.1 基本数据类型 
int(整型)、long(长整型)、float(浮点型)、double(双精度)、boolean(布尔型)  
byte(字节) 、shot(短整型) 、char(字符型)  
1.2 实例化 
在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式如下:类名 对象名 = new 类名(参数1,参数2...参数n);多数语言中,实例化一个对象 就是为对象开辟内存空间,或者是不用声明,直接使用。类是抽象。对象是类的实例。 
数据库实例:每个数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。数据库是数据以某中方式组织起来的数据集合,物理存储为数据库文件,数据库实例负责维护,访问这些数据。 
1.3 静态变量 
静态变量属于静态存储方式,其存储空间为内存中的静态数据区,该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变化。 
1.4 JVM和GC JVM: 
Java虚拟机一个虚拟出的计算机,它屏蔽了与具体平台相关的信息,用于执行JAVA编译程序生成字节码程序。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 “一次编译,到处运行”。  GC: 
Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。 
对标记为“不可达的对象“占用的内存进行回收释放。程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。当GC确定一些对象为\"不可达\"时,GC就有责任回收这些内存空间。什么时间回收,GC有一些自己算法。比如指令计数器,根搜索算法等。  
1.5 JAVA反射 
动态获取类的名称、变量属性等信息以及动态调用类的方法的一种技术。 

1.6 JAVA代理 
为代理对象提供一种可以控制被代理对象的方式。java通过实现InvocationHandler类来实现代理。 
代理类为被代理类的方法动态添加了某些功能,实现了调用者和被调用者之间的解耦。 如:                                                                 

TimeInvocationHandler timeHandler = new TimeInvocationHandler(); 

UserService u =  (UserService) Proxy.newProxyInstance(UserServiceImpl.class.getClassLoader(), UserServiceImpl.class.getInterfaces(), timeHandler); u.update(2); u.save(); 

1.7 注解 
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。  
spring注解:跟踪代码依赖性,实现替代配置文件功能。  
1.8 泛型类 
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 比如: 
public class UserAction extends BaseAction<UserVo> { 
1.9 多线程 
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。线程有就绪、阻塞和运行三种基本状态。在单个程序中同时运行多个线程完成不同的工作,称为多线程。   
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。  
线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据  
JAVA线程的实现用的是继承extend和实现runable接口。 
大多数多线程都是用实现runable接口实现的,可以达到资源共享的目的。  
线程的起动由一个线程调度器来分别调用你的所有线程的RUN方法, 
我们普通的RUN方法如果没有执行完是不会返回的,可是线程里的RUN方法,只有一定的CPU时间,执行过后就给别的线程了,这样反复的把CPU的时间切来切去,因为切换的速度很快,所以我们就感觉是很多线程在同时运行一样.  
1.10 string和stringbuffer区别 
string:为不可变对象,一旦被创建,就不能修改它的值;对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.  
stringbuffer: 是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象. 在字符串连接操作中,stringbuffer要比string效率高的多

                                                                                                     java学习心得

关于java程序汇编的一些思想,有助于以后深入系统的学习。 具体而言,学习java其实就是学习程序设计,学习程序设计就需要接受一种编程思想。要掌握java的精华特性而且要知道是什么,比如,Interface和multi-thread。用interface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理解interface是为什么,用多线程又有几种常用的编程模型。学习语言是要应用的,所以在掌握基本的思想后要转化为应用。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(MVC架构是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。)。首先要找出最顶层的对象(这往往是最难的),然后一层一层往下递归,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。在有了初步的设计模型之后,为了更好的设计程序,应该学习一下设计模式,例如体系结构模式(Layering分层,Pipe/Filter管道或过滤器)、编程模式(比如Copy-on-Write)。懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。对于程序设计,在初步对基本程序进行调试后,应该将纸上谈兵转化成实践。一般课本上的例子不能算是实践,只能知道一些语言特性的应用,而对于实际的工程来讲仅是冰山一角。对于像我们这样的初学者,应该在公认的论坛里面找一些比较经典的例子。比如用Java实现的HotDraw(源自SmallTalk),在rolemodel.com这个网站中,有一些原代码和一些基本设计的文档。从HotDraw上我学到了什么是Framework,以及如何用rolemodel的方式来构造,这样我就可以应用到其他的地方。设计模式目前有23种。 当有了一定的基础之后,按照前辈的建议,用简单的程序实现一些简单的系统。如果可以对他进行进一步的修改,找出自己觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。学习要学以致用,所以要加强实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。     对目前的学习状况,应该每天要多敲代码(在敲代码是要按自己的想法去敲,不要只是抄别人的代码),把老师布置的作业做好,好好写实验报告,同时要把自己做过的程序都保存好,有助于以后的复习巩固。如果有更深一步的学习需要,我会看别人推荐的书《(java2 21天自学通)Sams Teach Yourself java 2 in 21 Days,Professional Reference Edition》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》。     学习是一个循序渐进的过程,要在独立思考的基础上遇到不懂的问题向别人求救。万不得已才请教别人。看过一些学习java较好的人的经验是他们在遇到问题时首先自己思考,很多问题稍做思考就可以解决。当必须要请教时,在请教之前,你应该先回答如下几个问题。     1是否在google中搜索了问题的解决办法?      2是否查看了Java API文档?     3是否查找过相关书籍?     4是否写代码测试过? 

    如果回答都是"是"的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力很重要。我们在其他的学习中也遇到过这样的情况,所以我们清楚独立思考的重要性,它有助于我们更加深入牢固地掌握知识,比向别人求助记得更牢。 
    总之,每个语言能够存活并且发展起来,必有其特点让人们喜欢,学习java虽然是课程设置的要求,但随着学习的进一步深入,对它也有了一定的兴趣。现在有很多种计算机语言,语言和语言没有比较的必要的,语言只是工具,重要的是思想!所以在学习的过程中,选定一种感兴趣的语言后,首先学习基本的语句,然后在宏观角度去学习程序设计的思想。

猜你喜欢

转载自www.cnblogs.com/hhwcg/p/12028365.html