Java基础知识
一、Java语言的特点
1、跨平台
Java在诞生之时,就提出一个伟大的口号“一次编写随处运行”。其实个人感觉这是计算机语言随着硬件发展的一个必然产物,Java只不过是首先提出了这个理念。回顾历史有一种特别的感觉,但是
推动历史实在太难。Java在操作系统层面之上增加了虚拟机的概念,虚拟机可以针对不同的操作系统平台定制不同版本,而虚拟机的实现则是基于底层语言。例如C语言可以直接作用于硬件,与
是什么操作系统没有太大关系。Java虚拟机将源程序解释为字节码,而字节码可以运行在不同的虚拟机上,虚拟机从概念上可以跨平台,因此就可以推导出Java语言可以跨平台。
2、反射
程序在运行期可以获取对象自己的类型信息,明确知道自身的结构,调用对象上的函数。反射也叫自省,知道自己的存在对整个程序的影响。它的入口类是Class,每一个类型通过getClass()函数
得到这个类型的对象,通过这个对象可以获取类型上的函数、属性等信息。与反射有关的类如下:Modifier,Field,Method,Constructor。Modifier标记方法或者属性的访问控制类别常量,
Field属性对象,Method的是方法对象,Constructor是类的构造函数对象。Class对象提供newInstance()函数调用类的无参数的构造函数来创建类的实例,如果要调用有参数的构造函数则必须
通过Class对象返回类的Constructor对象,通过该对象调用。数组是一种特殊的类型,不能通过newInstance()函数创建,但是Java语言提供了Array类来创建数组。要获取函数的调用记录,
可以使用代理的方式进行,代理类Proxy
函数属性的的访问检查,Field和Method继承AccessibleObject.
java.lang.reflect.AccessibleObject.setAccessible(boolean flag)值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施
Java 语言访问检查。
3、面向对象
面向对象首先要明确几个术语:封装、继承、多态、重载、类、对象、接口
封装:封装是一个概念,它是把方法、属性、事件集中到一个的类中,对使用者来说操作是透明的。
继承:借用自然界生物链的概念,每一个对象都不是独立存在的。在这个程序世界中都与其他对象有着某种联系,从生物角度上看这种联系称作是父子关系,子从父上获取父的特性,并且拥有自己的特性。
这种程序关系叫做继承。
多态:一个同样的函数对于不同的对象可以具有不同的实现。例如一个Add方法,它既可以执行整数的加法求和操作,也可以执行字符串的连接操作,同一个函数有不同的状态。主要是子类继承父类,
并重写父类的方法,实现了不同的操作
重载:一个类中有若干个方法名相同,方法的参数不同,这种现象叫做重载。
类: 代表自然界中的类型,它描述了一组特征,定义了一组操作。仅仅是一种描述,一种定义。
对象:是类的实例化,属性的持有者和操作的执行者。
接口:接口是一种约定,它定义了一种结构,扩展了继承的单一性。
4、集合操作
集合操作有两个接口Collection和Map,分别属于集合的两个分支,他们提供了集合操作的基础方法。其中Collection包含两个分支,一个Set另一个是List。Set中无重复元素,如果
给一个结合添加两个重复元素,第二次调用之后返回false,取元素时返回null,但是在添加元素时没有校验。这样需要在添加元素时对于待添加的元素要求程序员非常明确,不能有重复元素。
List则不考虑重复元素,可以向List中增加任意元素。Map提供Key Value映射机制,通过Key快速定位Value。Map中有一个内部接口Entry,补充了集合的概念。集合是对数组概念和操作上
的扩充,集合中增加了迭代操作,对链表、队列等数据结构进行快速遍历。还有一些抽象类,程序员可以实现定制。目前常用的集合包括HashSet、HashMap、ArrayList、Properties等
集合中取元素, 列表对象可以使用get直接取,集合对象需要获取集合的迭代对象取值。
集合操作与引用传递:
Jvm对内存的管理,对象都存储在堆中,变量表存储在方法栈中,引用类型的变量也存放在方法栈中,如果列表或者集合中存放的是对象,则实际在列表中存放的是对象的引用。如果对集合或者列表
操作,复制或者删除,则不会改变堆中对象的数量,删除操作应该是删掉列表中的应用变量,堆中的对象则会被GC回收。(只是臆测而已,没有验证!) Hibernate的负责实体对象与数据库同步。
这就要求实体对象全局只能有一份,任何操作都是对这个一份对象进行的。
5、字符串的国际化,增加字符的概念
字符串有两种形式存在,
1.字符串常量,也称为字符串字面值
2.字符串对象
字符串常量在类编译之后保存在常量池中,字符串对象则作为一个对象存在。
字符串是字符的数组,字符在Java中被定义为Unicode码,统一字符编码,Unicode码为两个字节,可以代表任意字符。字符和字符串可以相互转换,字符和byte数据组也可以相互转换。
字符串的国际化就是将本地字符转换成统一字符编码。
字符串的比较
比较方式分为值比较和引用比较,值比较是比较字符串的值是否相等,引用比较是比较引用对象的指针是否相等,即是否指向内存中的同一块区域。
String的equal方法重载了Object对象上的equal方法,Object中的equal是this==obj,而String的equal则是通过比较字符串的内容扩展了equal方法。
在String类中有个标记为native的函数intern(),通过这个函数可以实现另一种比较字符串的方法。该函数可以把调用该函数的字符以常量的形式补充在常量池中,然后可以按照常量的
比较语法==进行比较。intern()函数要比equal()函数的性能好,但是可以忽略不计。
国际化与本地化:
根据地理、人文、习惯划分,需要国际化和本地化的内容可以分为:字符串、日期、时间和历法。字符串主要通过统一编码的形式进行,日期和时间主要各个地区的显示格式不同,历法也是如此
国际化和本地化之间有区域化的概念,区域化是相同地区的一个汇总。
6、多线程
在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,然后再返回主进程。线程是进程的基本单元,
线程只是用于分配单个处理器的处理时间的一种工具。但假如操作系统本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。多线程要协调处理资源
分配,就像银行出纳员处理储户的存取款一样。例如两个窗口对同一个账户进行操作,一个存款一个取款。在早期没有计算机的时代,第一个出纳员会在该储户的文件柜 看被操作之前增加
一个特殊的标记,标记当前这个账户正在被使用,第二个出纳员必须等待直到第一个出纳员取消标记,第二个出纳员才能开始对该账户进行操作。计算机的多线程借助这个概念,称之为锁。
只有资源的锁被打开的情况下线程才能对该资源进行操作。
创建线程:Java中提供了两种方式创建线程,扩展java.lang.Thread类,实现java.lang.Runnable接口。每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。
线程调度:
1、调整线程优先级:Java线程有优先级,优先级高的线程会获得较多的运行机会。
2、线程睡眠:Thread.sleep(long millis)方法,使线程转到阻塞状态。millis参数设定睡眠的时间,以毫秒为单位。当睡眠结束后,就转为就绪(Runnable)状态。sleep()平台移植性好。
3、线程等待:Object类中的wait()方法,导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 唤醒方法。这个两个唤醒方法也是Object类中的方法,
行为等价于调用 wait(0) 一样。
4、线程让步:Thread.yield() 方法,暂停当前正在执行的线程对象,把执行机会让给相同或者更高优先级的线程。
5、线程加入:join()方法,等待其他线程终止。在当前线程中调用另一个线程的join()方法,则当前线程转入阻塞状态,直到另一个进程运行结束,当前线程再由阻塞转为就绪状态。
6、线程唤醒
分享到:
相关推荐
Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。
Java 基础知识大全 本资源摘要信息是 Java 基础知识大全的总结,涵盖了 Java 语言的基本概念、特点、历史发展等方面的知识点。以下是本资源摘要信息的详细内容: 一、 Java 语言的特点 * 面向对象:Java 语言是...
java基础知识,帮助初学者更快更好地掌握java。ppt内容具体易懂,希望对刚接触java的初学者有所帮助。
### Java基础知识精炼 #### 一、Java概述与发展历程 Java是一种高级编程语言,由Sun Microsystems公司的James Gosling等人于1991年开始研发,原名为Oak,旨在控制嵌入式设备如有线电视交换盒和PDA。1994年正式更名...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)的James Gosling等人于1991年...无论是初学者还是经验丰富的开发者,对Java基础知识的深入理解和实践都是提升编程技能的关键。
java基础知识的培训ppt,对于java初学者来说可以有一些作用。
java基础知识
JAVA基础知识总结 JAVA基础知识总结 JAVA基础知识总结
Java基础知识总结涵盖了Java程序设计语言的核心概念和常用知识点。在详细学习和总结这些知识点之前,首先需要对Java有一个整体的认识。Java是一种面向对象的编程语言,它具有跨平台的特性,即“一次编写,到处运行”...
Java 基础知识总结是 Java 程序员不可或缺的一部分,本总结将涵盖 Java 的基础知识,包括 Java 概述、Java 语法基础、变量、数据类型、运算符、控制语句、方法、数组、继承、多态、接口、异常、IO 流等。 一、Java ...
【Java基础知识概述】 Java是一种广泛使用的高级编程语言,由Sun Microsystems公司(现已被Oracle公司收购)于1991年发起的“绿色项目”孕育而生,最初名为Oak。尽管最初的项目目标并未实现,但Java作为一种面向...
### Java基础知识总结(绝对经典) #### 一、Java概述 - **起源与发展**:Java语言始于1991年Sun公司的James Gosling等人所开发的Oak语言,原计划用于控制嵌入式设备如有线电视交换盒和个人数字助理(PDA)。1994年...
java基础知识点总结及面试问题java基础知识点总结及面试问题java基础知识点总结及面试java基础知识点总结及面试问题
Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础...
java基础知识点,面试宝典,最适合你的java面试知识点,所学java知识点总结
Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案...
Java基础知识.pdf