1. 程式人生 > >java基礎(一):java語法基礎

java基礎(一):java語法基礎

前言

上個月本來打算跳槽去帝都,面了幾家公司,已經拿到offer,但是因為畢業設計的事情沒有離職成功,在面試過程中發現了自身的許多不足,尤其是java基礎這方面,所以打算把最近整理的一些java基礎知識(大部分來自畢向東老師的總結),放到部落格中,方便以後查閱,同時也希望能夠幫助到大家。不斷更新。。

java資料型別

1.基本資料型別

在掌握8種基本資料型別以後還要清楚佔幾個位元組:
字元型:char 2個位元組
整數型別:byte 1個位元組,short 2個位元組,int 4個位元組,long 8個位元組
浮點型別:float 4個位元組,double 8個位元組。
布林型別:Boolean 1個位元組
(注:1個位元組 = 8位)
級別從低到高為:byte,char,short(這三個平級)–>int–> long –> float –>double
自動型別轉換:從低級別到高級別,系統自動轉的;
強制型別轉換:什麼情況下使用?把一個高級別的數賦給一個別該數的級別低的變數;
注意:

String不是基礎資料型別
基本資料型別物件包裝類:是按照面向物件思想將基本資料型別封裝成了物件。
好處:
1:可以通過物件中的屬性和行為操作基本資料。
2:可以實現基本資料型別和字串之間的轉換。

基本資料型別 包裝類
byte Byte
short Short
long Long
double Double
char Character
Boolean Boolean

基本資料型別物件包裝類:都有 XXX parseXXX 方法
只有一個型別沒有parse方法:Character ;
面試相關:


1.說一下java中的基本資料型別,各佔多少位元組。
2.不同基本資料型別轉換問題,注意強制轉化、精度丟失問題。
3.java包裝型別裝箱拆箱問題。
4.判斷兩個值是否相等的問題?如下:

Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;   
        System.out.println(i1 == i2);//true
        System.out.println(i3 == i4);//false

        Double d1 = 100.0
; Double d2 = 100.0; Double d3 = 200.0; Double d4 = 200.0; System.out.println(d1 == d2);//false System.out.println(d3 == d4);//false Boolean b1 = false; Boolean b2 = false; Boolean b3 = true; Boolean b4 = true; System.out.println(b1 == b2);//false System.out.println(b3 == b4);//false Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3L; Long h = 2L; System.out.println(c == d);//true System.out.println(e == f);//false System.out.println(c == (a + b));//true System.out.println(c.equals(a + b));//true System.out.println(g == (a + b));//true System.out.println(g.equals(a + b));//false System.out.println(g.equals(a + h));//true

解釋:答案如上註釋部分,核心考察點就是上道題的答案,即 java 1.5 開始的自動裝箱拆箱機制其實是編譯器自動完成的替換,裝箱階段自動替換為了 valueOf 方法,拆箱階段自動替換為了 xxxValue 方法。對於 Integer 型別的 valueOf 方法引數如果是 -128~127 之間的值會直接返回內部快取池中已經存在物件的引用,引數是其他範圍值則返回新建物件;而 Double 型別與 Integer 型別一樣會呼叫到 Double 的 valueOf 方法,但是 Double 的區別在於不管傳入的引數值是多少都會 new 一個物件來表達該數值(因為在指定範圍內浮點型資料個數是不確定的,整型等個數是確定的,所以可以 Cache)。 注意:Integer、Short、Byte、Character、Long 的 valueOf 方法實現類似,而 Double 和 Float 比較特殊,每次返回新包裝物件。 對於兩邊都是包裝型別的比較 == 比較的是引用,equals 比較的是值,對於兩邊有一邊是表示式(包含算數運算)則 == 比較的是數值(自動觸發拆箱過程),對於包裝型別 equals 方法不會進行型別轉換。

String

1.String類是final類,所以說String類不能被繼承,並且它的成員方法都預設為final方法。
2.String類的底層是用一個char陣列來儲存字串。
3.String物件一旦被建立就是固定不變的了,對String物件的任何改變都不影響到原物件,相關的任何change操作都會生成新的物件,所以對String進行改變會效能下降和資源的浪費。

相關推薦

java基礎java語法基礎

前言 上個月本來打算跳槽去帝都,面了幾家公司,已經拿到offer,但是因為畢業設計的事情沒有離職成功,在面試過程中發現了自身的許多不足,尤其是java基礎這方面,所以打算把最近整理的一些java基礎知識(大部分來自畢向東老師的總結),放到部落格中,方便以後查閱

Java併發volatile的實現原理 Java併發Java記憶體模型乾貨總結

synchronized是一個重量級的鎖,volatile通常被比喻成輕量級的synchronized volatile是一個變數修飾符,只能用來修飾變數。 volatile寫:當寫一個volatile變數時,JMM會把該執行緒對應的本地記憶體中的共享變數重新整理到主記憶體。 volatile讀:當讀一

JAVA學習JAVA開發環境的搭建

對於一門程式語言,首先要有開發環境,在這個環境之下,才能利用這門語言順利進行開發。 而一般,JAVA的開發環境我們用JDK來代表。 所以開發環境的搭建也就包含三個過程:下載,安裝和配置JDK。 1.下載JDK(java軟體開發工具包:編譯+執行),通過SUN官方網站

Java核心Java平臺的理解

從事 Java 至今已有6年有餘,再次做一次溫習並記錄於此,記得對 Java 最直觀的印象就是它宣傳的 “Write once, run anywhere”,還是目前看已經有些過於形式主義的語法呢?你對於 Java 平臺到底瞭解到什麼程度?請你先停下來總結思考一

Java多執行緒執行緒基礎及建立

(一)、執行緒的生命週期 新建狀態: 使用 new 關鍵字和 Thread 類或其子類建立一個執行緒物件後,該執行緒物件就處於新建狀態。它保持這個狀態直到程式 start() 這個執行緒。 就緒狀態: 當執行緒物件呼叫了start()方法之後,該執行緒就進入就緒

面試題Java基礎知識

Java 基礎知識01. 面向物件的特性有哪些?答:封裝、繼承和多型。02. Java 中覆蓋和過載是什麼意思?解析:覆蓋和過載是比較重要的基礎知識點,並且容易混淆,所以面試中常見。答:覆蓋(Overr

java基礎我對java的三個環境變數的簡單理解和配置

首先說說java的三個環境變數:java_home,classpath,path java_home:jdk的安裝路徑【你一層一層點開安裝路徑,直到當前目錄有一個bin目錄,然後在位址列裡面右鍵單擊複製地址就是jdk的安裝路徑(eg:D:\Java\jdk1.8.0_65)】,沒有其實也可以,在用到jdk的

Java入門Hello World !

公司 java入門(一) 擁有 sys 成熟 pos pac runt asc 前言 從今天開始,準備寫Java Web開發的系列文章,畢竟自己主攻的還是Java方向,Python只是業余學習的興趣使然,在第二技能還沒有培養成熟前,做好第一技能的鞏固和提高是很有必要的。從正

java集合List、Iterator、Array、ArrayList、LinkList

整體 http 是否 簡潔 畢業 一個 位置 數據 reac 畢業這麽久,java 標準庫中的集合都沒怎麽仔細了解過,準備好好學習學習。 集合(Collection):由一個或多個確定的元素所構成的整體叫做 集合--百度百科的解釋。換言之,就是裝元素的容器,元素可以是任何類

Core JavaJava程式設計概述

Java “白皮書”的關鍵術語 簡單性 面向物件 分散式 健壯性 安全性 體系結構中立 可移植性 解釋型 高效能 多執行緒 動態性 簡單性 Java語法是C++語法的一個“純淨”版本。這裡沒有標頭檔案、

Java學習第一章 計算機、程式和Java概述

第一章 計算機、程式和Java概述   (1)匯流排--》    儲存裝置、記憶體、CPU、通訊裝置、輸入裝置、輸出裝置; (2)語言: 機器語言: 二進位制形式

java反射反射的演變

有三種方式: 1.通過object物件的例項呼叫getClass String hello = "hello world"; Class<?> helloClass = hello.getClass(); Sys

JAVA 學習16進位制字串自增的實現

JAVA學習系列,並不是從基礎去講java的知識,而是把我在學習或是工作中,一些思想、邏輯總結出來。 原先在工作中,因為測試的需要,經常要往資料庫中批量的插資料。而表的主鍵用的是UUID,是由16進位制字元加“-”組成的,還有裝置的mac地址是由16進位制字元加“:”組成的,那個時候,我剛學ja

Spring AOP 前篇Java代理之JDK靜態代理、JDK動態代理、CGLIB動態代理

Spring AOP 前篇:Java代理之JDK靜態代理、JDK動態代理、CGLIB動態代理 該文章參考多篇文章的基礎上進行了簡化並做少許修改,方便理解。原文章地址如下: Java之代理(jdk靜態代理,jdk動態代理,cglib動態代理,aop,aspectj

bigdata資料分析Java環境配置

Java環境 1.下載jdk(用FileZilla工具連線伺服器後上傳到需要安裝的目錄) 在 /opt/deploy 下新建 java 資料夾:  # mkdir / opt/deploy /java   解壓命令:tar zxvf 壓縮包名稱 (例如:tar zxvf jdk-8u191-

Java虛擬機器Java編譯器和類載入機制

目錄 編譯時 載入 連線 初始化 類載入器 類的載入 參考: 什麼是Java虛擬機器 從Java虛擬機器所做的事情上去理解,可以分為兩個階段,編譯時和執行時。編譯時主要是一個由編譯器將原始碼譯為虛擬機器指令集的一個過程;而執行

Java還要再學基礎認識java

為什麼選擇Java 公司一個熱衷Python的同事突然問我:你給我說說Java到底有什麼好? 幾番辯論之後我意識到似乎一直以來都忽略的這個問題。網上看了蠻多,記錄一下免得被別人再問到表示很尷尬。

設計模式(一):單例模式 JVM類載入機制 JDK原始碼學習筆記——Enum列舉使用及原理 Java併發):雙重檢驗鎖定DCL Java併發):Java記憶體模型 Java併發):Java記憶體模型 Java併發):雙重檢驗鎖定DCL JDK原始碼學習筆記——Enum列舉使用及原理

單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許一個例項存在。 單例模式一般體現在類宣告中,單例的類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。 適用場合: 需要頻繁的進行建立和銷燬的物件; 建立物

elasticsearchJAVA api操作

1.建立一個mavan專案,專案的以來配置如下。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

JavaEE 從入門到放棄Java EE 是個什麼東西

為什麼選擇 Java 想必有很多初學者會像我一樣,不知選擇什麼語言入門。在嘗試了 C、C++、C#、Python、PHP 後,我決定把 Java作 為第一門深入學習的程式語言。這個路著實有點長… 不過放心,你可以大膽地選擇 Java。如果說 C++ 是程式設計界