面試 基礎內容第一篇

1.java 集合實現了什麼接口?java

Java API針對集合類型排序提供了兩種支持:
java.util.Collections.sort(java.util.List)
java.util.Collections.sort(java.util.List, java.util.Comparator)

第一個方法要求所排序的元素類必須實現java.lang.Comparable接口。
第二個方法要求實現一個java.util.Comparator接口。

java.lang.Comparable接口和java.util.Comparator接口是Java對排序最提供最基本支持。這兩個接口不但能夠用於集合元素排序,還能夠用於數組排序。

若是數組或集合元素是String類型,則能夠利用Java API實現的Comparator<String>對象String.CASE_INSENSITIVE_ORDER爲容器元素排序。mysql

方法一:實現Comparable接口排序package collsort.comparable; 
package com.cvicse.sort.comparable;

public class Cat implements Comparable<Cat> {
private int age;
private String name;

public Cat(int age, String name) {
this.age = age;
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
......
public int compareTo(Cat o) {
return this.getAge() - o.getAge();
}
......
}jquery

public class TestComparable {
public static void main(String args[]) {
test();
test2();
}
public static void test() {
......
List<Cat> listCat1 = new ArrayList<Cat>();
Cat cat1 = new Cat(34, "hehe");
Cat cat2 = new Cat(12, "haha");
Cat cat3 = new Cat(23, "leizhimin");
Cat cat4 = new Cat(13, "lavasoft");
listCat1.add(cat1);
listCat1.add(cat2);
listCat1.add(cat3);
......
System.out.println("調用Collections.sort(List<T> list)listCat2升序排序:");
Collections.sort(listCat1);
System.out.println("降序排列元素:");
Collections.sort(listCat1, Collections.reverseOrder());
System.out.println("Collections.reverse 從列表中最後一個元素開始輸出:");
Collections.reverse(listCat1);
......
}
/**
* 針對數組的排序
*/
public static void test2() {
String[] strArray = new String[] { "z", "a", "C" };
System.out.println("數組轉換爲列表");
List<String> list = Arrays.asList(strArray);
System.out.println("順序排序列表");
Collections.sort(list);
System.out
.println("按String實現的Comparator對象String.CASE_INSENSITIVE_ORDER排序----");
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
System.out.println("倒序排序列表");
Collections.sort(list, Collections.reverseOrder());
......
}
}
方法二:實現Comparator接口排序
public class Person {
private int age;
private String name;
......
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
......
}
實現了Comparator接口,重寫了compare方法
import java.util.Comparator;
public class PersonComparator implements Comparator<Person> {angularjs

public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
}
測試方法
public class TestComparator {
public static void main(String args[]) {
test1();
}
public static void test1() {
System.out.println("升序排序測試:");
List<Person> listPerson = new ArrayList<Person>();
Person person1 = new Person(34, "lavasoft");
Person person2 = new Person(12, "lavasoft");
Person person3 = new Person(23, "leizhimin");
Person person4 = new Person(13, "sdg");
listPerson.add(person1);
listPerson.add(person2);
listPerson.add(person3);
Comparator<Person> ascComparator = new PersonComparator();
System.out.println("排序後集合爲:");
// 利用Collections類靜態工具方法對集合List進行排序
Collections.sort(listPerson, ascComparator);
System.out.println("\n降序排序測試:");
// 從升序排序對象產生一個反轉(降序)的排序對象
Comparator<Person> descComparator = Collections
.reverseOrder(ascComparator);
System.out.println("利用反轉後的排序接口對象對集合List排序並輸出:");
Collections.sort(listPerson, descComparator);
outCollection(listPerson);
}
}web

2.struts1或struts2的工做原理算法

struts1:spring

一、初始化:struts框架的總控制器ActionServlet是一個Servlet,它在web、xml中配置成自動啓動的Servlet,在啓動時總控制器會讀取配置文件(struts-config、xml)的配置信息,爲struts中不一樣的模塊初始化相應的對象。sql

二、發送請求:用戶提交表單或經過URL向WEB服務器提交請求,請求的數據用HTTP協議傳給web服務器。shell

三、form填充:struts的總控制器ActionServlet在用戶提交請求時將數據放到對應的form對象中的成員變量中。編程

四、派發請求:控制器根據配置信息對象ActionConfig將請求派發到具體的Action,對應的formBean一併傳給這個Action中的excute()方法。

五、處理業務:Action通常只包含一個excute()方法,它負責執行相應的業務邏輯(調用其它的業務模塊)完畢後返回一個ActionForward對象。服務器經過ActionForward對象進行轉發工做。

六、返回響應:Action將業務處理的不一樣結果返回一個目標響應對象給總控制器。

七、查找響應:總控制器根據Action處理業務返回的目標響應對象,找到對應的資源對象,通常狀況下爲jsp頁面。

八、響應用戶:目標響應對象將結果傳遞給資源對象,將結果展示給用戶。

struts2 :

一、客戶端初始化一個指向Servlet容器(例如Tomcat)的請求;

二、這個請求通過一系列的過濾器(Filter)(這些過濾器中有一個叫作ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其餘框架的集成頗有幫助,例如:SiteMesh、Plugin);

三、接着FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請求是否須要調用某個Action;

四、若是ActionMapper決定須要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy;

五、ActionProxy經過Configuration Manager詢問框架的配置文件,找到須要調用的Action類;

六、ActionProxy建立一個ActionInvocation的實例。

七、ActionInvocation實例使用命名模式來調用,在調用Action的過程先後,涉及到相關攔截器(Intercepter)的調用。

八、一旦Action執行完畢,ActionInvocation負責根據struts、xml中的配置找到對應的返回結果。返回結果一般是(但不老是,也多是另外的一個Action鏈)一個須要被表示的JSP或者FreeMarker的模版。在表示的過程當中可使用Struts2框架中繼承的標籤。在這個過程當中須要涉及到ActionMapper。

3.struts1和struts2的核心工做原理

Action 類: 
• Struts1要求Action類繼承一個抽象基類。Struts1的一個廣泛問題是使用抽象類編程而不是接口,而struts2的Action是接口。 
• Struts 2 Action類能夠實現一個Action接口,也可實現其餘接口,使可選和定製的服務成爲可能。Struts2提供一個ActionSupport基類去 實現 經常使用的接口。Action接口不是必須的,任何有execute標識的POJO對象均可以用做Struts2的Action對象。

線程模式: 
• Struts1 Action是單例模式而且必須是線程安全的,由於僅有Action的一個實例來處理全部的請求。單例策略限制了Struts1 Action能做的事,而且要在開發時特別當心。Action資源必須是線程安全的或同步的。
• Struts2 Action對象爲每個請求產生一個實例,所以沒有線程安全問題。(實際上,servlet容器給每一個請求產生許多可丟棄的對象,而且不會致使性能和垃圾回收問題)

Servlet 依賴: 
• Struts1 Action 依賴於Servlet API ,由於當一個Action被調用時HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。
• Struts 2 Action不依賴於容器,容許Action脫離容器單獨被測試。若是須要,Struts2 Action仍然能夠訪問初始的request和response。可是,其餘的元素減小或者消除了直接訪問HttpServetRequest 和 HttpServletResponse的必要性。

可測性: 
• 測試Struts1 Action的一個主要問題是execute方法暴露了servlet API(這使得測試要依賴於容器)。一個第三方擴展--Struts TestCase--提供了一套Struts1的模擬對象(來進行測試)。
• Struts 2 Action能夠經過初始化、設置屬性、調用方法來測試,「依賴注入」支持也使測試更容易。 

捕獲輸入: 
• Struts1 使用ActionForm對象捕獲輸入。全部的ActionForm必須繼承一個基類。由於其餘JavaBean不能用做ActionForm,開發者常常建立多餘的類捕獲輸入。動態Bean(DynaBeans)能夠做爲建立傳統ActionForm的選擇,可是,開發者多是在從新描述(建立)已經存 在的JavaBean(仍然會致使有冗餘的javabean)。
• Struts 2直接使用Action屬性做爲輸入屬性,消除了對第二個輸入對象的需求。輸入屬性多是有本身(子)屬性的rich對象類型。Action屬性可以經過 web頁面上的taglibs訪問。Struts2也支持ActionForm模式。rich對象類型,包括業務對象,可以用做輸入/輸出對象。這種 ModelDriven 特性簡化了taglib對POJO輸入對象的引用。

表達式語言: 
• Struts1 整合了JSTL,所以使用JSTL EL。這種EL有基本對象圖遍歷,可是對集合和索引屬性的支持很弱。 
• Struts2可使用JSTL,可是也支持一個更強大和靈活的表達式語言--"Object Graph Notation Language" (OGNL). 

綁定值到頁面(view): 
• Struts 1使用標準JSP機制把對象綁定到頁面中來訪問。 
• Struts 2 使用 "ValueStack"技術,使taglib可以訪問值而不須要把你的頁面(view)和對象綁定起來。ValueStack策略容許經過一系列名稱相同但類型不一樣的屬性重用頁面(view)。

類型轉換: 
• Struts 1 ActionForm 屬性一般都是String類型。Struts1使用Commons-Beanutils進行類型轉換。每一個類一個轉換器,對每個實例來講是不可配置的。
• Struts2 使用OGNL進行類型轉換。提供基本和經常使用對象的轉換器。 

校驗: 
• Struts 1支持在ActionForm的validate方法中手動校驗,或者經過Commons Validator的擴展來校驗。同一個類能夠有不一樣的校驗內容,但不能校驗子對象。
• Struts2支持經過validate方法和XWork校驗框架來進行校驗。XWork校驗框架使用爲屬性類類型定義的校驗和內容校驗,來支持chain校驗子屬性 

Action執行的控制: 
• Struts1支持每個模塊有單獨的Request Processors(生命週期),可是模塊中的全部Action必須共享相同的生命週期。 
• Struts2支持經過攔截器堆棧(Interceptor Stacks)爲每個Action建立不一樣的生命週期。堆棧可以根據須要和不一樣的Action一塊兒使用。

 

4.struts框架的核心內容

Action是整個Struts框架的核心內容。無論是struts1仍是struts2.

 

5.angularjs的工做原理

angularjs的原理核心是雙向數據綁定。AngularJS的工做原理是:HTML模板將會被瀏覽器解析到DOM中, DOM結構成爲AngularJS編譯器的輸入。AngularJS將會遍歷DOM模板, 來生成相應的NG指令,全部的指令都負責針對view(即HTML中的ng-model)來設置數據綁定。

 

6.快速排序的要求

快速排序採用的思想是分治思想。

快速排序是找出一個元素(理論上能夠隨便找一個)做爲基準(pivot),而後對數組進行分區操做,使基準左邊元素的值都不大於基準值,基準右邊的元素值 都不小於基準值,如此做爲基準的元素調整到排序後的正確位置。遞歸快速排序,將其餘n-1個元素也調整到排序後的正確位置。最後每一個元素都是在排序後的正 確位置,排序完成。因此快速排序算法的核心算法是分區操做,即如何調整基準的位置以及調整返回基準的最終位置以便分治遞歸。

 

7.jsp原生標籤

jsp:attribute / jsp:body /jsp:element / jsp:fallback / jsp:forward / jsp:getProperty / jsp:include / jsp:output /jsp:param / jsp:params/

jsp:plugin / jsp:setProperty / jsp:useBean

 

8.web.xml在項目中的做用和web.xml有哪些標籤

每一個javaEE工程中都有web.xml文件,那麼它的做用是什麼呢?它是每一個web.xml工程都必須的嗎? 

一個web中能夠沒有web.xml文件,也就是說,web.xml文件並非web工程必須的。 

web.xml文件是用來初始化配置信息:好比Welcome頁面、servlet、servlet-mapping、filter、listener、啓動加載級別等。

當你的web工程沒用到這些時,你能夠不用web.xml文件來配置你的Application。


每一個xml文件都有定義它書寫規則的Schema文件,也就是說javaEE的定義web.xml所對應的xml Schema文件中定義了多少種標籤元素,web.xml中就能夠出現它所定義的標籤元素,也就具有哪些特定的功能。web.xml的模式文件是由Sun 公司定義的,每一個web.xml文件的根元素爲<web-app>中,必須標明這個web.xml使用的是哪一個模式文件。如: 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
</web-app> 

    web.xml的模式文件中定義的標籤並非定死的,模式文件也是能夠改變的,通常來講,隨着web.mxl模式文件的版本升級,裏面定義的功能會愈來愈複雜,標籤元素的種類確定也會愈來愈多,但有些不是很經常使用的,咱們只需記住一些經常使用的並知道怎麼配置就能夠了。 


下面列出web.xml咱們經常使用的一些標籤元素及其功能: 

一、指定歡迎頁面,例如: 
<welcome-file-list> 
  <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>index1.jsp</welcome-file> 
  </welcome-file-list> 
PS:指定了2個歡迎頁面,顯示時按順序從第一個找起,若是第一個存在,就顯示第一個,後面的不起做用。若是第一個不存在,就找第二個,以此類推。 

關於歡迎頁面: 

    訪問一個網站時,默認看到的第一個頁面就叫歡迎頁,通常狀況下是由首頁來充當歡迎頁的。通常狀況下,咱們會在web.xml中指定歡迎頁。但 web.xml並非一個Web的必要文件,沒有web.xml,網站仍然是能夠正常工做的。只不過網站的功能複雜起來後,web.xml的確有很是大用處,因此,默認建立的動態web工程在WEB-INF文件夾下面都有一個web.xml文件。


二、命名與定製URL。咱們能夠爲Servlet和JSP文件命名並定製URL,其中定製URL是依賴命名的,命名必須在定製URL前。下面拿serlet來舉例: 
(1)、爲Servlet命名: 
<servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>org.whatisjava.TestServlet</servlet-class> 
</servlet> 

(2)、爲Servlet定製URL、 
<servlet-mapping> 
    <servlet-name>servlet1</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping>


三、定製初始化參數:能夠定製servlet、JSP、Context的初始化參數,而後能夠再servlet、JSP、Context中獲取這些參數值。 

下面用servlet來舉例: 
<servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>org.whatisjava.TestServlet</servlet-class> 
    <init-param> 
          <param-name>userName</param-name> 
          <param-value>Daniel</param-value> 
    </init-param> 
    <init-param> 
          <param-name>E-mail</param-name> 
          <param-value>125485762@qq.com</param-value> 
    </init-param> 
</servlet> 
通過上面的配置,在servlet中可以調用getServletConfig().getInitParameter("param1")得到參數名對應的值。 

四、指定錯誤處理頁面,能夠經過「異常類型」或「錯誤碼」來指定錯誤處理頁面。 
<error-page> 
    <error-code>404</error-code> 
    <location>/error404.jsp</location> 
</error-page> 
----------------------------- 
<error-page> 
    <exception-type>java.lang.Exception<exception-type> 
    <location>/exception.jsp<location> 
</error-page> 

五、設置過濾器:好比設置一個編碼過濾器,過濾全部資源 
<filter> 
    <filter-name>XXXCharaSetFilter</filter-name> 
    <filter-class>net.test.CharSetFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>XXXCharaSetFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

  六、設置監聽器: 
  <listener> 
  <listener-class>net.test.XXXLisenet</listener-class> 
  </listener> 

  七、設置會話(Session)過時時間,其中時間以分鐘爲單位,假如設置60分鐘超時: 
  <session-config> 
  <session-timeout>60</session-timeout> 
  </session-config>


  除了這些標籤元素以外,還能夠往web.xml中添加不少標籤元素,因爲不經常使用省略。

 

9.hashMap和hashTable的區別

  1.可見Hashtable 繼承自 Dictiionary 而 HashMap繼承自AbstractMap

  2.HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap容許空(null)鍵值(key),因爲非線程安全,效率上可能高於Hashtable。

  3.Hashtable的方法是Synchronize的,而HashMap不是,在多個線程訪問Hashtable時,不須要本身爲它的方法實現同步,而HashMap 就必須爲之提供外同步(Collections.synchronizedMap)。 

 

10.collection集合

List  --> AbstractList,ArrayList,LinkedList,Stack,Vector

Map --> HashMap ,Hashtable, Properties, LinkedHashMap, IdentityHashMap, TreeMap, WeakHashMap, ConcurrentHashMap 

Set --> HashSet ,TreeSet

 

11.Set如何遍歷

package com.shellway.javase;

import java.util.ArrayList;

import java.util.Collection;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;

 

import org.junit.Test;

 

public class TestCollection {

   

  public static void print(Collection<? extends Object> c){

    Iterator<? extends Object> it = c.iterator();

    while (it.hasNext()) {

      Object object = (Object) it.next();

      System.out.println(object);

    }

  }

   

  @Test

  public void demo1(){

    Set<String> set = new HashSet<String>();

    set.add("AAA");

    set.add("BBB");

    set.add("CCC");

    print(set);

     

    //Set的第一種遍歷方式:利用Iterator

    Iterator<String> it1 = set.iterator();

    for (String ss : set) {

      System.out.println(ss);

    }

    //Set的第一種遍歷方式:利用foreach

    for (String sss : set) {

      System.out.println(sss);

    }

     

    List<String> list = new ArrayList<String>();

    list.add("DDDDD");

    list.add("EEEEE");

    list.add("FFFFF");

    print(list);

     

    //List的第一種遍歷方式:由於list有順序,利用size()和get()方法獲取

    for (int i = 0; i < list.size(); i++) {

      System.out.println(list.get(i));

    }

    //List的第二種遍歷方式:利用Iterator

    Iterator<String> it = list.iterator();

    while (it.hasNext()) {

      System.out.println(it.next());

    }

    //List的第三種遍歷方式:利用foreach

    for (String s2 : list) {

      System.out.println(s2);

    }

     

    Map<String,String> map = new TreeMap<String, String>();

    map.put("Jerry", "10000");

    map.put("shellway", "20000");

    map.put("Kizi", "30000");

    print(map.entrySet());

    //Map的第一種遍歷方式:先得到key,再得到值value

    Set<String> sett = map.keySet();

    for (String s : sett) {

      System.out.println(s+":"+map.get(s));

    }

    //Map的第二種遍歷方式:得到鍵值對

    for (Map.Entry<String, String> entry : map.entrySet()) {

      System.out.println(entry.getKey()+" : "+entry.getValue());

    }

  }

}

12.String 和StringBuffer的區別

(1)String類對象爲不可變對象,一旦你修改了String對象的值,隱性從新建立了一個新的對象,釋放原String對象,StringBuffer類對象爲可修改對象,能夠經過append()方法來修改值

(2)String類對象的性能遠不如StringBuffer類。

 

13.線程的啓動方法

啓動線程確定要用start()方法。當用start()開始一個線程後,線程就進入就緒狀態,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。當cpu分配給它時間時,纔開始執行run()方法(若是有的話)。START()是方法,它調用RUN()方法.而RUN()方法是你必須重寫的. run()方法中包含的是線程的主體。

繼承Thread類的啓動方式:

public class ThreadStartTest { 

    public static void main(String[] args) { 

        ThreadTest tt = new ThreadTest();// 建立一個線程實例 

         tt.start();  // 啓動線程 

    } 

實現Runnable接口的啓動方式:

public class RunnableStartTest { 

    public static void main(String[] args) { 

       Thread t = new Thread(new RunnableTest());    // 建立一個線程實例

        t.start();  // 啓動線程 

    } 

實際上這兩種啓動線程的方式原理是同樣的。首先都是調用本地方法啓動一個線程,其次是在這個線程裏執行目標對象的run()方法。那麼這個目標對象是什麼呢?爲了弄明白這個問題,咱們來看看Thread類的run()方法的實現:

public void run() { 

    if (target != null) { 

        target.run(); 

    } 

當咱們採用實現Runnable接口的方式來實現線程的狀況下,在調用new Thread(Runnable target)構造器時,將實現Runnable接口的類的實例設置成了線程要執行的主體所屬的目標對象target,當線程啓動時,這個實例的 run()方法就被執行了。當咱們採用繼承Thread的方式實現線程時,線程的這個run()方法被重寫了,因此當線程啓動時,執行的是這個對象自身的 run()方法。總結起來就一句話,若是咱們採用的是繼承Thread類的方式,那麼這個target就是線程對象自身,若是咱們採用的是實現Runnable接口的方式,那麼這個target就是實現了Runnable接口的類的實例。

 而若是直接用Run方法,這只是調用一個方法而已,程序中依然只有主線程--這一個線程,其程序執行路徑仍是隻有一條,這樣就沒有達到寫線程的目的。

 

14.講講mybatis

SqlSessionFactory是每一個MyBatis應用的核心

SqlSessionFactoryBuilder 是用過即丟,其生命週期只存在於方法體內

SqlSessionFactory 單例,存在於整合應用運行時

 

15.springmvc和mybatis整合,須要配置些什麼

<!-- 配置DataSource數據源 -->

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://10.0.0.131:3306/ash2"/>

<property name="username" value="dev"/>

<property name="password" value="dev"/>

</bean>

<!-- 配置SqlSessionFactoryBean -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource"/>

<property name="configLocation" value="classpath:mybatis.xml"/>

<!-- mapper和resultmap配置路徑 -->

<property name="mapperLocations">

<list>

<!-- 表示在com.hoo.resultmap包或如下全部目錄中,以-resultmap.xml結尾全部文件 -->

<value>classpath:com/hoo/resultmap/**/*-resultmap.xml</value>

<value>classpath:com/hoo/entity/*-resultmap.xml</value>

<value>classpath:com/hoo/mapper/**/*-mapper.xml</value>

</list>

</property>

</bean>

上面的配置最早配置的是DataSource,這裏採用的是jdbc的DataSource;

而後是SqlSessionFactoryBean,這個配置比較關鍵。SqlSessionFactoryBean須要注入DataSource數據源,其次還要設置configLocation也就是mybatis的xml配置文件路徑,完成一些關於mybatis的配置,如settings、mappers、plugin等;

 

16.jquery的選擇器有哪些

不少種,大概概括爲9種。
(1)基本
#id
element
.class
*
selector1,selector2,selectorN

(2)層次選擇器:
ancestor descendant
parent > child
prev + next
prev ~ siblings

(3)基本過濾器選擇器
:first
:last
:not
:even
:odd
:eq
:gt
:lt
:header
:animated

(4)內容過濾器選擇器
:contains
:empty
:has
:parent

(5)可見性過濾器選擇器
:hidden
:visible

(6)屬性過濾器選擇器
[attribute]
[attribute=value]
[attribute!=value]
[attribute^=value]
[attribute$=value]
[attribute*=value]
[attrSel1][attrSel2][attrSelN]

(7)子元素過濾器選擇器
:nth-child
:first-child
:last-child
:only-child

(8)表單選擇器
:input
:text
:password
:radio
:checkbox
:submit
:image
:reset
:button
:file
:hidden

(9)表單過濾器選擇器
:enabled
:disabled
:checked
:selected

17.java傳值與傳引用  一、對象是按引用傳遞的  二、Java 應用程序有且僅有的一種參數傳遞機制,即按值傳遞  三、按值傳遞意味着當將一個參數傳遞給一個函數時,函數接收的是原始值的一個副本  四、按引用傳遞意味着當將一個參數傳遞給一個函數時,函數接收的是原始值的內存地址,而不是值的副本

相關文章
相關標籤/搜索