下面小編就為大家帶來一篇Java的基本資料型別和運算方法(必看篇)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
編碼
ASCII--0~127 65-A 97-a
西歐碼表--- ISO-8859-1---0-255---1個位元組
gb2312----0-65535---gbk---2個位元組
#Unicode編碼系統---utf-8---3個位元組
中f
bit位元Byte位元組1Byte = 8bit 1KB=1024B MB GB TB PB---電腦中儲存單位
常數
整數常數---所有的整數3,99,107
小數常數---所有的小數3.5 100.9
字元常數---用單引號將一個字母、數字、符號標識起來'a' '=' ' '
##字串常數---用雙引號將一個或多個字元標識起來“abc” “234” “q2” “”布林常數---用來表示邏輯值---true/false空常數--- null5-整數, 5.0-小數'5'-字元“5”-字串'5.0'-寫法錯誤“5.0”-字串。制
二進位:滿二進一,0~1 1+1=10 0b10011 0b0011,從JDK1.7開始,允許以0b作為開頭來識別一個數字是一個二進位數字八進位:滿八進一,0~7,7+1=10 要求必須以0作為開頭06 015十進位:滿十進一,0~9十六進位:滿十六進一,0~9,,A~F,9+1=A f+1=10 要求以0x作為開頭0x5 0xad進位的轉換
十二進位轉換成十進位:從低位次起,按位次乘以2的位次冪,然後求和二進制轉換成八進制:從低位次起,每三位劃分為一組,不足三位補0,產生一位八進制數字,將這些數字按序排列即可八進制轉換成二進制:一變三---一位八進制數字產生三位二進制數字二進制轉換成十六進制:四變一的過程變數
System.out.println(i);int i = 5;---不行---變數必須先宣告在使用
#資料型別
基本資料型別
#數值型整數型byte ---位元組型---1個位元組--- -2^7~2^7-1 --- -128~127byte b = 5; byte b2 = -128; short---短整型---2個位元組--- -2^15~2^15-1 --- -32768~32767short s = 54 ; short s = -900;int---整數---4個位元組--- -2^31~2^31-1int i = 100000; int j = 100_000_000;--從JDK1.7開始是允許的。在編譯的時候會自動忽略這些_ -> int j = 100000000;int i = 00001111;---八進位#Java中整數預設類型就是intlong---長整型---8個位元組--- -2^63~2^63-1---以L作為結尾標識這個數字是一個long類型的數字#長 l = 3L;浮點型float---單一精確度---4個位元組---必須以f作為結尾float f = 3.2f;double---雙精確度---8個位元組Java中小數預設是double類型double d = 3.5;double d = 4.6D;---可以double d = 3.9e4; //是十進制的科學計數法double d = 0x3p2; //是十六進制的科學計數法-> 12字元型char---2個位元組--- 0 ~65535char c = 'a';char c = '中';布林型boolean---true/falseboolean b = false;引用資料類型
類別---class 介面---interface 陣列---[]資料類型的轉換
隱含轉換/byte b = 100; int i = b; long l = 63;---可以---当整数的值在int类型的范围内的时候,可以不用添加L这个结尾規則一:小的型別可以轉換成大的型別---byte->short->int->長 float->double
int i = 5; float f = i; long l = 6; float f = l;規律二:整數可以轉換為小數,但是可能產生精確度損失
char c = ‘a'; int i = c;規律三:字元型可以轉換為整數
short s = ‘a';---可以 char c = 100;---可以 char c = ‘a'; short s = c;---不可以定義了char類型的變數c,儲存的資料是一個字符,不需要檢查具體的字符編碼,當賦值給short類型的時候,short需要檢查這個字符對應的編碼是否在short類型的取值範圍內,這時候無法確定這個字元對應的特定編碼,由於short類型的取值範圍和char型別沒有完全重合,為了防止出現超過範圍的情況,不允許賦值。
short s = 97; char c = s;--不可以明確轉換/強制類型轉換
long l = 54; int i = (int)l; double d = 3.5; int i = (int)d;---小数强转成整数的时候,小数部分直接舍弃 double类型不能精确存储小数 Hexadecimal--十六进制 Decimal--十进制 Octal---八进制 Binary--二进制
#運算子
int i = 5210 / 1000 * 1000;--->i = 5000;注意:
2. 整数除以0的时候,编译通过,运行报错---ArimeticException---算术异常
3. 小数除以0的结果是Infinity
4. 0/0.0的结果是NaN---Not a Number---非数字
5. byte/short类型在运算的时候会自动提升为int类型
%取余运算 -5%3=-2 -4%3=-1 -3%7=-3 5%-3=2 7%-2=1 2%-8=2 -5%-3=-2 -9%-3=0
对于负数的取余,先按照正数的取余运算,看取余符号左边的数字的符号,如果左边是负数,那么结果就是负数
5%1.2=0.2 6%1.3=0.8 4.3%1.4=0.1 ++/--
对于++在原来的基础上自增1
int i = 5; int j = ++i;---> i自增1,然后将i的值赋值给j---先自增,再运算 int j = i++;--->先获取i的值5,i自增变成6,然后将获取的值5赋值给j---先运算,再自增 int i = 3; int j = ++i * 2;-> j = 8; int j = i++ * 2;->j = 6 int i = 6; int j = i++ + ++i;->i = 8; j = 14; int j = ++i + i++;->i = 8; j = 14 byte b = 5; b++;---JVM在底层会对结果进行强制类型转换,将结果再转换为byte类型 char c = ‘a'; System.out.println(c + 4);--可以 char c2 = ‘d'; System.out.println(c + c2);---提升为int类型之后再进行运算 + 字符串拼接运算 “a” + “b”---> “ab” “a” + 3---> “a3” “a” + true-> “atrue” 2 + 4 + “f”-> “6f” “f” + 2 + 4-> “f24”
= += -= *= /= %= &= |= ^= <<= >>= >>>= ~= int i= 5; i += 3; -> i = i + 3; -> i = 8; i -= 2;-> i = i - 2;-> i = 3; int j; j += 4;---不行 int i = 5; i += i -= i *= 5;--> i = -15; i = 5 + ( 5 - (5 * 5)) ; i += i -= i *= ++i;--->i = -20; i += i*= i-= (i++ + --i);---> i = -20; i = 5 + ( 5 * (5 - (5 + 5))); byte b = 5; b += 3;---可以 byte b = 125; b += 3;---可以--- -128
比较/关系运算符
==相等 !=不等 > < >= <= instanceof 3 == 4;-> false instanceof---判断对象与类的关系的--只能用于引用数据类型 String s = “abd”; System.out.println(s instanceof String);---true System.out.println(“def” instanceof String);---true
用于运算逻辑值
&与 |或 !非 ^异或 &&短路与 ||短路或 true&true=true true&false=false false&true=false false&false=false true|true=true true|false=true false|true=true false|false=false !true=false !false=true true^true=false true^false=true false^true=true false^false=false
对于&&,如果前一个表达式的值为false,那么就能确定整个表达式的值为false,&&后边的运算就不再进行了
三元/三目/条件运算符
逻辑值?表达式1:表达式2
如果逻辑值为true,执行表达式1;反之执行表达式2
int i = 5, j = 7; i > j ? System.out.println(i): System.out.println(j);---不行!三元运算符运算完成之后必须有结果!
double d = i > j ? i * 2.5 : j;---两个表达式的返回值类型要么一致,要么相容
从控制台获取数据
import java.util.Scanner; //写在package之下,class 之上 Scanner s = new Scanner(System.in); int i = s.nextInt(); double d = s.nextDouble(); String str = s.nextLine(); String str2 = s.next();
以上是Java中關於運算方法與基本資料類型的分析(收藏)的詳細內容。更多資訊請關注PHP中文網其他相關文章!