java的一些基本概念

概念

最近想看看书,了解一下java的基本概念,其实以前也看过,但是囫囵吞枣,实在有愧.然而温故以知新,学习本应就是理解深化的过程.
主要看的书是《Java 2 参考大全》和《Java 2 核心技术:原理》

Java基本概念
一.字符类型
主要重温了一下各种字符类型占据的字节数。
short 短整型 16位 2字节
int 整型 32位 4字节
long 长整型 64位 8字节
浮点分单精度float和双精度double
float 单精度 32位 4字节
double双精度 64位 8字节

char 这一点比较特殊,java使用的不是ascii字符,也不是扩展的8位字符集,而是unicode字符集,unicode字符占据16位,2字节,可以表示人类所有发现的字符,也因为如此java可以比较方便的进行国际化,不知这个理解有无问题。
实际上char的值是个整数(0-65536),因此我们给char赋值可以用整数或者用单引号括起来的字符
顺便就看了一下UTF(unicode text format)格式,它是这样出来16位的unicode字符
前九位为0的unicode字符:一个字节
前五位为0的unicode字符:两个字节
其它:三个字节
对应的前缀编码:
0xxxxxxx Ascii码
10xxxxxx 第二或者第三个字节
110xxxxx 两字节序列中的第一个字节
1110xxxx 三字节序列中的第一个字节

二.类
类与对象:类是一个逻辑结构,对象拥有物理实体.也就是说类不占据内存空间,对象占据一定的内存空间.可以从类对象的获取说明这个问题。
Box aBox=new Box();
实际上这个过程分两步
Box aBox;
aBox=new Box();
第一步是创建一个对象,返回的aBox是一个对象的引用。
第二步才是调用构造函数,为对象分配内存空间,返回的是这个内存地址的引用,这个引用被赋给了aBox。
构造函数是如何工作的呢?
构造函数没有返回值,是因为其隐含的返回类型是类本身。
默认的构造函数自动将所有的实例变量初始化为0。
实例变量即是一个类中定义的数据或变量,类的成员是指类中定义的方法和变量。

引用是个很有意思的东西。
Box a=new Box();
Box b=new Box();
这个时候a和b对应各自的内存地址,如果
a=b;
这个时候a,b均指向同一个内存地址即b的内存地址。也就是说现在你更改a中的成员变量的值b的变量的值也随之改变;如果改变b中成员变量的值,a的对应变量也随之改变。引用只是一个内存的地址。

类中有个词语叫做抽象类,抽象类有很多含义和细节需要注意:
1。包含抽象方法的类必须声明为抽象类
2。抽象类的方法在子类中必须被覆盖,否则子类也必须声明为抽象类
3。抽象类不能有对象,不能new一个抽象类将其实例化
4。抽象类可以有抽象方法也可以有具体实现了的方法
5。抽象类可以创建对象引用
第五条非常有用,可以实现多态。李乾师兄曾讲解的设计模式中的工厂方法也就是抽象类的超类变量引用不同的子类对象。
由于接口都没有实现自身的方法,如果一个类没有实现接口中的方法,也必须定义为抽象类。

三.接口
接口只定义方法名,但是不实现方法。
接口可以声明变量,但是这些变量将是隐含的、最终的、静态的,不能由实现接口的类来改变。因此可以将共享常量在接口中定义,然后导入到多个类中。
可以使用接口引用来调用实现,这是什么意思呢?
inerface callback()
{
public void call(int p)
{

}
}

class client implements callback
{
public void call(int p)
{

}

}

public static void (String arg[])
{
<b>callback c=new client();</b>
c.call(1);
}

注意上面黑体字部分callback c=new client(), 创建了一个client对象,却声明为接口类型,这其中的意思就是c只是知道接口callback中方法,至于实现这个接口的client类还有什么其它的方法,c一概不知。这有些类似超类引用子类对象,很有用处的地方就是实现多态,很多实现这个接口的类可以用同一个接口的引用来调用。

四. 访问控制

五. 一些保留字的含义和运用
static:一般修饰类的成员,使该类成员独立于类的任何对象,使用类名即可调用。
使用static要注意:
1.static 方法仅可调用其它的static方法
2.只能访问static数据
3.不能以任何方式调用this或者super。(还不明白为什么)

this:在任何方法中都可以使用this来调用当前的对象,this总是当前对象的一个引用。
this可以用于实例变量隐藏
所谓实例变量隐藏,就是说当一个本地变量和一个实例变量同名时,实例变量就被隐藏了。比如Box的构造函数
Box( double aWidth,double aHeight , double aDepth )
{
width=aWidth;
height=aHeight ;
depth=aDepth;
}
如果这时候参数是 width,height,depth,则这些本地的变量就会和类的成员变量同名,这时候就会发生实例变量被隐藏的现象。但是this可以避免这种情况。
Box( double width,double height , double depth )
{
this.width=width;
this.height=height ;
this.depth=depth;
}
this直接引用对象,可以解决名字空间的问题,即本地变量和类的实例变量同名的问题。(这个需要再想想)

super:主要有两种用法
1。super(parameter_list)调用超类的构造函数,但是这必须是子类构造函数的第一条语句。这里有趣的事情是子类构造函数调用超类构造函数时,过程是怎么样的;实际上是按照类的派生顺序调用构造函数。
2。super.member 这时候作为超类对象的引用调用超类的方法或者实例变量

final:可修饰变量,方法和类。
final 变量:变量的内容不能被修改
final 方法:方法不能被重载
final 类 :类不能被继承

时间: 2024-09-05 16:45:07

java的一些基本概念的相关文章

进一步理解Java中的多态概念_java

多态性有两种: 1)编译时多态性 对于多个同名方法,如果在编译时能够确定执行同名方法中的哪一个,则称为编译时多态性. 2)运行时多态性 如果在编译时不能确定,只能在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态性. 方法覆盖表现出两种多态性,当对象获得本类实例时,为编译时多态性,否则为运行时多态性,例如: XXXX x1 = new XXXX(参数列表); //对象获得本类实例,对象与其引用的实例类型一致 XXX xx1 = new XXX(参数列表); x1.toString();

《Java程序设计习题精析与实验指导》一第2章 Java程序设计的基本概念 - 2.1 重点复习

第2章 Java程序设计的基本概念 2.1 重点复习 2.1.1 数据类型及标识符 Java的数据类型可分为两大类:基本数据类型和复合数据类型.基本数据类型共有8种,分为4小类,分别是:布尔型(boolean).字符型(char).整数型(byte.short.int.long)和实型(float.double).复合数据类型包括数组.类(class)和接口(interface).Java的标识符是用于定义各种对象名称的字符串集合.标识符一般分为用户自定义标识符和系统标识符两种.系统标识符即关键

Java入门的基本概念

前言: 在我们学习Java的过程中,掌握其中的基本概念对我们的学习无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基础,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习过程中更好的理解java的精髓,在此我总结了30条基本的概念. Java概述: 目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合pc应用程序的开发,其发展逐渐变成在开发手持设备,互联网信息站,及车载计算机的开发.Java于其

纪念Java经典的SandBox概念

概念 虽然现在内容丰富了很多,也不再局限于applet,但是原汁原味的sandbox,仍然值得回味. A security measure in the Java development environment. The sandbox is a set of rules that are used when creating an applet that prevents certain functions when the applet is sent as part of a Web pa

java对象序列化的概念和实现

一 序列化的概念和实现方法 序列化的概念就是把一个Object直接转换成为Byte流写到硬盘或者通过网络进行传播.Java序列化技术可以将一个对象的状态写入一个Byte流里,并且可以从其它地方把该Byte流里的数据读出来,重新构造一个相同的对象.这种机制允许将对象通过网络进行传播,并可以随时把对象持久化到数据库.文件等系统里.Java的序列化机制是RMI.EJB等技术的技术基础.   序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将

AKKA文档(java)——术语,概念

原文:http://doc.akka.io/docs/akka/2.3.6/general/terminology.html 译者:吴京润 本章我们试图建立一个通用的术语列表,用来定义有关并发和分布式系统的坚实的基础,而这也是akka的目标.请注意,在这些术语当中许多并没有一致的定义.我们简单的寻求在akka文档范围内使用的工作定义. 并发与并行 并发与并行是相关的概念,但是也有很多细节上的差异.并发意味着两个或更多的任务正在取得进展,即使它们不是同时执行的.例如,可以用时间片的方式实现这一点,

Java中一些基础概念的使用详解_java

类的初始化顺序 在Java中,类里面可能包含:静态变量,静态初始化块,成员变量,初始化块,构造函数.在类之间可能存在着继承关系,那么当我们实例化一个对象时,上述各部分的加载顺序是怎样的? 首先来看代码: 复制代码 代码如下: class Parent {     public static StaticVarible staticVarible= new StaticVarible("父类-静态变量1");         public StaticVarible instVaribl

java 变量的定义概念及命名规则

变量是指在程序执行过程中,其值可以改变的量.在内存的数据区中,会为变量分配存储空间来存放变量的值,这个内存空间的地址对应着变量名称,所以在程序中可以通过变量名称来区分和使用这些内存空间. 在Java语言中声明一个变量的语法如下: type 标识符 其中type表示数据类型,标识符则为变量名.例如: int i;                    //声明一个int型变量, 用来存储int型整数 float f;                  //声明一个float型变量, 用来存储flo

Java中框架的概念,以及从配置文件中读取配置信息并加载指定类

  学了反射后,也不知道反射是干什么的,那学了就没什么用了. 反射在框架中有很重要的作用,什么是框架呢? 大家在做JavaWeb开发的时候 用过JDBC吧,首先上来的时候 我们需要加载JDBC的驱动. Class.forName(...)  //每个不同的驱动对应不同的类名字 对于开发人员来说不同的人选择的驱动程序 不一样 .那么我们就需要不同的驱动类 . 我们是在JSP标签中进行了 这个类的调用,那么相对来说  JSP就是一个框架,而我们加载的这个类就是一个工具. 框架与工具的关系 就是 我们