`
wfzhanga
  • 浏览: 70491 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA基础常见问题

阅读更多
1. String ,StringBuffer和StringBuilder的区别?
1. java.lang.StringBuffer和java.lang.StringBuilder的可变字符序列,一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
这两者上的主要操作是 append(String x) 和 insert (int n,String x)方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
2. 两者区别:StringBuffer是线程安全的,StringBuilder是多线程不安全的
3. String是定长的,这意味着在String里面做字符串的联结很耗资源。
4. 如果需要经常进行字符串连接,用StringBuffer,StringBuilder会快很多,但如果一般不需改其值或要对值进很修改,String会更好一些

 

2) java中常用集合
集合类存放于java.util包中。
集合类型主要有3种:set(集)、list(列表)和map(映射)。

其中List和Set接口都继承自Collection接口,而Map接口和他俩不同,不是继承于Collection接口。

(1)集 Set

集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。

对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。

集也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到集中的操作将变为按照某种比较规则将其插入到有序的对象序列中。它实现的是SortedSet接口,也就是加入了对象比较的方法。通过对集中的对象迭代,我们可以得到一个升序的对象集合。

1:HashSet 能够快速定位一个元素,但是它要求存入HashSet的对象必须实现HashCode方法

2:TreeSet 将放入其中的元素按序存放



(2)列表 List

List接口与其实现类是容量可变的列表,可以按照索引访问集合中的元素,是有序的集合

列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。

1:ArrayList: 实现一个数组,它的规模可变并且能像链表一样被访问。它提供的功能类似Vector类但不同步,它是以Array方式实现的List,允许快速随机存取。

2:LinkedList: 实现一个链表,提供最佳顺序存取,适合插入和移除元素。由这个类定义的链表也可以像栈或队列一样被使用。

(3)映射 Map

映射与集或列表有明显区别,映射中每个项都是成对的,Map是把键对象和值对象进行关联的容器。映射中存储 的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的存储 位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。关键字应该是唯一的,也就是说Map中的键对象不允许重复,这是为了保证查询结果的一致性。

关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)技术来处理,产生一个被称作散列码(hash code)的整数值,散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。

1:HashMap: 实现一个键到值映射的哈希表,通过键取得值对象,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个)。

2:HashTable: 实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。Dictionary的子类,缺省是线程同步的。不允许关键字或值为null,当元素的顺序很重要时选用TreeMap,当元素不必以特定的顺序进行存储时,使用HashMap.

Hashtable的使用不被推荐,因为HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。

在编写程序的过程中,使用到集合类,要根据不同的需求,来决定使用哪种集合类,比如,要经常遍历集合内元素,就要使用List,如果要保证集合中不存在重复的数据,就要用Set;如果要通过某一键来查找某一值,就要使用Map

 

3) 重载(Overloading)与(Overriding)重写区别?
1. Overloading 写道
(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
 
public class Dog {
     Dog()
     {
            this.bark();
     }
     void bark()//bark()方法是重载方法
     {
            System.out.println("no barking!");
            this.bark("female", 3.4);
     }
     void bark(String m,double l)//注意:重载的方法的返回值都是一样的,
     {
            System.out.println("a barking dog!");
            this.bark(5, "China");
     }
     void bark(int a,String n)//不能以返回值区分重载方法,而只能以“参数类型”和“类名”来区分
     {
            System.out.println("a howling dog");
     } 
}
 
2. Overriding
(1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
(2) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
(3) 子类函数的访问修饰权限不能少于父类的;
 
public class Base
{
    void test(int i)
    {
        System.out.print(i);
    }
    void test(byte b)
    {
        System.out.print(b);
    }
}
public class TestOverriding extends Base
{
    void test(int i)
    {
        i++;
        System.out.println(i);
    }
      public static void main(String[]agrs)
    {
        Base b=new TestOverriding();
        b.test(0)
        b.test((byte)0)
    }
}
 
 
4) Java关键字final、static使用总结 写道
一、final

  根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。

  final类不能被继承,没有子类,final类中的方法默认是final的。

  final方法不能被子类的方法覆盖,但可以被继承。

  final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

  final不能用于修饰构造方法。

二、static

  static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
1、static变量
2、静态方法
  静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
3、static代码块
  static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”,对于变量,表示一旦给值就不可修改,并且通过类名可以访问。!
 
 class Base{  
         static void a( ){System.out.println("A");  }  
                  void b( ){System.out.println("B"); }  
 }  
 public class  Inherit extends Base{  
          static void a( ){System.out.println("C");  }  
                   void b( ){System.out.println("D"); }  
            public static void main(String args[]){  
                     Base b=new Base();  
                     Base  c=new Inherit();  
                     b.a();  
                     b.b();  
                     c.a();  
                     c.b();  
          }  
 } 
/*
以上输出的结果是:A
                           B
                           A
                           D
非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。
*/
 
5) java中public,protected,private区别? 写道
作用域     当前类 同package 子孙类 其他package

public          √          √          √          √

protected    √          √          √         ×

friendly        √         √          ×          ×

private         √         ×          ×          ×

 

 

分享到:
评论
1 楼 jiaer36 2010-09-19  
回顾了下以前学过滴``

相关推荐

    Java基础常见问题总结

    Java基础常见问题总结 面向对象编程是Java语言的基础之一,了解面向对象的概念和实现细节对于Java开发人员非常重要。在这个资源中,我们将总结一些Java基础常见问题,涵盖面向对象、构造方法、接口、抽象类、String...

    java 面试常见题-基础部分 java 面试常见题-基础部分 java 面试常见题-基础部分

    java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 ...

    Java技术面试常见问题

    从数据结构,到开发设计模式,再到java基础详细讲述java面试常见问题,让你面试轻松过关,并且懂得面试技巧,增加自身基础知识

    JAVA基础,常见java基础问题(1).zip

    "JAVA基础,常见java基础问题(1).zip"这个压缩包很可能是为了帮助初学者或有经验的开发者复习和解决他们在学习Java过程中遇到的基础问题。在`javabase-master`这个目录下,我们可以推测包含了一些关于Java基础知识的...

    JAVA基础测试中常见的异常问题汇总

    下面将深入探讨在Java基础测试中常见的异常问题及其解决方案,尤其关注那些在执行基本Java程序时可能遇到的异常情况。 ### 1. "java' is not recognized as an internal or external command 这种情况通常发生在...

    Java常见问题集锦(FAQ)

    Java 常见问题集锦涵盖了多个Java编程和应用中的关键知识点,包括环境变量配置、集成开发工具选择、Java applet的调试、JDBC字符编码问题、RMI性能优化以及Java应用的类路径设置。 首先,对于Java环境的配置,Java ...

    JAVA基础,常见java基础问题.rar

    JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 如果你需要运行java程序,只需安装JRE就可以了。如果你需要...

    Java基础练习代码

    Java基础是学习编程语言的重要阶段,对于初学者来说,掌握好这一阶段的知识是成为熟练Java开发者的基石。本文将深入探讨Java基础练习代码中的关键概念,帮助初学者巩固基础,提高编程技能。 首先,Java是一种面向...

    Java基础入门.pdf

    本文档旨在为初学者提供Java基础知识的概述,涵盖了Java是什么、Java能做什么和Java怎样改变我的生活等问题的答案。 什么是Java? Java是一种高级程序语言,也是一个平台。它具有以下特征:简单、面向对象、可分布...

    java 常见问题

    总的来说,Java初学者应重点掌握语言基础、数据类型、数组操作、面向对象编程的基本概念,特别是多态性,这是理解和编写高效、灵活的Java代码的关键。通过实际编程练习和阅读提供的压缩包资源,能够更有效地学习和...

    Java基础常见面试题总结

    Java基础常见面试题总结 基础概念与常识和常见面试题

    Java基础知识笔试题及答案

    Java 基础知识笔试题及答案 Java 是一种广泛使用的编程语言,它具有强大的功能和灵活性。本资源汇总了 Java 基础知识笔试题及答案,涵盖了 Java 的基本概念、数据类型、运算符、控制结构、函数、数组、集合框架、...

    Java基础常见面试题

    Java基础常见面试题,包含Java概述、基本语法、面向对象、IO流、反射、常见API等方面的常见面试题。 适用于Java编程的初学者,能够更好的掌握Java编程的基础知识,在提高自身技术水平的同时,也能更好的准备面试,...

    Java基础常见英语词汇

    了解并掌握Java中的常见英语词汇对于学习和工作至关重要。以下是一些关键概念的详细解释: 1. **Object-oriented (面向对象)**:Java是一种面向对象的语言,这意味着它的设计哲学是基于对象,每个对象都有特定的...

    07-Java基础(数组-常见问题)

    在这个主题“07-Java基础(数组-常见问题)”中,我们将深入探讨数组在Java编程中的一些常见问题及其解决方案。 1. **数组的声明与初始化** 在Java中,数组的声明分为声明类型和变量名,以及指定数组长度两个步骤。...

    java基础常见面试题

    以下是一些关于Java基础的常见面试题,涵盖了从基础概念到高级特性的各个方面: 1. **Java简介** - 什么是Java?Java是一种跨平台、面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。 - ...

    java常见面试题(史上最全最经典-希望对你有用)

    1. Java基础部分 * 一个".java"源文件中是否可以包括多个类(不是内部类)?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 * Java有没有goto?Java中没有goto语句,goto是Java中的...

    Java面试题大全(整理版)1000+面试题 (面试准备+Java基础+高级特性+常见问题+答案解析)

    Java作为一门广泛使用的编程语言,其面试题涵盖了基础到高级的多个方面。这份全面的面试题资源包含了Java的各个方面,包括但不限于基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、反射、设计模式...

Global site tag (gtag.js) - Google Analytics