Ⅰ java如何查找列表中的最小位和最大位的值
importjava.util.ArrayList;
importjava.util.List;
publicclassTest{
publicstaticvoidmain(String[]args){
List<Integer>list=newArrayList<>();
list.add(12);
list.add(34);
list.add(5);
渣賣蔽list.add(123);
list.add(89);
intmin=Integer.MAX_VALUE;//用於記錄列表中的最小值
intmax=Integer.MIN_VALUE;//用於記錄列表中的最大值
如州for(Integerinteger:list){
if(integer<min){
min=integer;//遍歷找出最小值
}
if(integer>max){
配碧max=integer;//遍歷找出最大值
}
}
System.out.println("最小值是:"+min+",最大值是:"+max);
}
}
Ⅱ JAVA位運算符
位操作符(bitwise operator)
位操作符允許我們操作一個基本數據類型中的整數型值的單個「比特(bit)」,即二進制位。
位操作符會對兩個參數對應的位執行布爾代數運算,並最終生成一個結果。
位操作符來源於 C 語言面向底層的操作,那時我們經常需要直接操縱硬體,設置硬體寄存
器內的二進制位。Java的設計初衷是嵌入電視機頂盒內,所以這種低級操作仍被保留了下來。
但是,我們可能不會過多地使用到位運算符。
如果兩個輸入位都是 1,則按位「與」操作符(&)生成一個輸出位 1;否則生成一個輸出
位0。如果兩個輸入位里只要有一個是1,則按位「或」操作符(|)生成一個輸出位1;只
有在兩個輸入位都是0的情況下,它才會生成一個輸出位0。如果兩個輸入位的某一個是1,
但不全都是1,那麼「異或」操作(^)生成一個輸出位1。按位「非」(~ ,也稱為取補運
算,ones compliement operator )屬於一元操作符;它只對一個操作數進行操作(其他位操
作是二元運算)。按位「非」生成與輸入位相反的值——若輸入0,則輸出1;輸入1,則輸
出0。
位操作符和邏輯操作符都使用了同樣的符號。因此,我們能方便地記住它們的含義:由於「位」
是非常「小」的,所以位操作符僅使用了一位符號。
位操作符可與等號(=)聯合使用,以便合並運算操作和賦值操作:&=,|=和^=都是合法
的(由於~是一元操作符,所以不可與=聯合使用)。
我們將布爾類型(boolean)作為一種「單比特」值對待,所以它多少有些獨特的地方。我們
可對它執行按位「與」、「或」和「異或」運算,但不能執行按位「非」(大概是為了避免與
邏輯 NOT 混淆)。對於布爾值,位操作符具有與邏輯操作符相同的效果,只是它們不會中
途「短路」。此外,針對布爾值進行的按位運算為我們新增了一個「異或」邏輯操作符,它並
未包括在「邏輯」操作符的列表中。在移位表達式中,我們被禁止使用布爾運算,原因將在下
面解釋。
移位操作符(shift operator)
移位操作符操作的運算對象也是二進制的「位」,但是它們只可以被用來處理整數類型(基本
類型的一種)。左移位操作符(<<)能將操作符左邊的運算對象向左移動操作符右側指定的
位數(在低位補 0)。「有符號」右移位操作符(>>)則將操作符左邊的運算對象向右移動操
作符右側指定的位數。「有符號」右移位操作符使用了「符號擴展」:若符號為正,則在高位插
入0;若符號為負,則在高位插入1。Java中增加了一種「無符號」右移位操作符(>>>),它
使用了「零擴展」:無論正負,都在高位插入0。這一操作符是C或C++沒有的。
如果對char、byte或者short類型的數值進行移位處理,那麼在移位進行之前,它們會自動
轉換為int,並且得到的結果也是一個int類型的值。而右側操作數,作為真正移位的位數,
只有其二進製表示中的低5位才有用。這樣可防止我們移位超過int型值所具有的位數。(譯
註:因為2的5次方為32,而int型值只有32位)。若對一個long類型的數值進行處理,
最後得到的結果也是long。此時只會用到右側操作數的低6位,以防止移位超過long型數
值具有的位數。
移位可與等號(<<=或>>=或>>>=)組合使用。此時,操作符左邊的值會移動由右邊的值指
定的位數,再將得到的結果賦回左邊的變數。但在進行「無符號」右移結合賦值操作時,可能
會遇到一個問題:如果對byte或short值進行這樣的移位運算,得到的可能不是正確的結果。
它們會先被轉換成int類型,再進行右移操作。然後被截斷,賦值給原來的類型,在這種情
況下可能得到-1的結果。下面這個例子演示了這種情況:
//: c03:URShift.java
// Test of unsigned right shift.
import com.bruceeckel.simpletest.*;
public class URShift {
static Test monitor = new Test();
public static void main(String[] args) {
int i = -1;
System.out.println(i >>>= 10);
long l = -1;
System.out.println(l >>>= 10);
short s = -1;
System.out.println(s >>>= 10);
byte b = -1;
System.out.println(b >>>= 10);
b = -1;
System.out.println(b>>>10);
monitor.expect(new String[] {
"4194303",
"18014398509481983",
"-1",
"-1",
"4194303"
});
}
} ///:~
在最後一個移位運算中,結果沒有賦回給b,而是直接列印出來,所以其結果是正確的。
下面這個例子向大家闡示了如何應用涉及「按位」操作的所有操作符:
//: c03:BitManipulation.java
// Using the bitwise operators.
import com.bruceeckel.simpletest.*;
import java.util.*;
public class BitManipulation {
static Test monitor = new Test();
public static void main(String[] args) {
Random rand = new Random();
int i = rand.nextInt();
int j = rand.nextInt();
printBinaryInt("-1", -1);
printBinaryInt("+1", +1);
int maxpos = 2147483647;
printBinaryInt("maxpos", maxpos);
int maxneg = -2147483648;
printBinaryInt("maxneg", maxneg);
printBinaryInt("i", i);
printBinaryInt("~i", ~i);
printBinaryInt("-i", -i);
printBinaryInt("j", j);
printBinaryInt("i & j", i & j);
printBinaryInt("i | j", i | j);
printBinaryInt("i ^ j", i ^ j);
printBinaryInt("i << 5", i << 5);
printBinaryInt("i >> 5", i >> 5);
printBinaryInt("(~i) >> 5", (~i) >> 5);
printBinaryInt("i >>> 5", i >>> 5);
printBinaryInt("(~i) >>> 5", (~i) >>> 5);
long l = rand.nextLong();
long m = rand.nextLong();
printBinaryLong("-1L", -1L);
printBinaryLong("+1L", +1L);
long ll = 9223372036854775807L;
printBinaryLong("maxpos", ll);
long lln = -9223372036854775808L;
printBinaryLong("maxneg", lln);
printBinaryLong("l", l);
printBinaryLong("~l", ~l);
printBinaryLong("-l", -l);
printBinaryLong("m", m);
printBinaryLong("l & m", l & m);
printBinaryLong("l | m", l | m);
printBinaryLong("l ^ m", l ^ m);
printBinaryLong("l << 5", l << 5);
printBinaryLong("l >> 5", l >> 5);
printBinaryLong("(~l) >> 5", (~l) >> 5);
printBinaryLong("l >>> 5", l >>> 5);
printBinaryLong("(~l) >>> 5", (~l) >>> 5);
monitor.expect("BitManipulation.out");
}
static void printBinaryInt(String s, int i) {
System.out.println(
s + ", int: " + i + ", binary: ");
System.out.print(" ");
for(int j = 31; j >= 0; j--)
if(((1 << j) & i) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
static void printBinaryLong(String s, long l) {
System.out.println(
s + ", long: " + l + ", binary: ");
System.out.print(" ");
for(int i = 63; i >= 0; i--)
if(((1L << i) & l) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
} ///:~
程序末尾調用了兩個方法:printBinaryInt()和printBinaryLong()。它們分別接受
一個 int 或 long 值的參數,並用二進制格式輸出,同時附有簡要的說明文字。你可以暫
時忽略它們具體是如何實現的。
請注意這里是用 System.out.print(),而不是 System.out.println()。print()方法不自動換行,所
以我們能在同一行里輸出多個信息。
上面的例子中,expect() 以一個文件名作參數,它會從這個文件中讀取預期的行(其中
可以有,也可以沒有正則表達式)。對於那些太長,不適宜列在書里的輸出,這種做法很有
用。這個文件的擴展名是「.out」,是所發布的代碼的一部分,可以從www.BruceEckel.com下
載。如果有興趣的話,可以打開這個文件,看看正確的輸出應該是什麼(或者你自己直接運
行一下前面這個程序)。
上面的例子展示了對int和long的所有按位運算的效果,還展示了int和long的最小值、最
大值、+1和-1值,以及它們的二進制形式,以使大家了解它們在機器中的具體形式。注意,
最高位表示符號:0為正,1為負。下面列出例子中關於int部分的輸出:
-1, int: -1, binary:
+1, int: 1, binary:
maxpos, int: 2147483647, binary:
maxneg, int: -2147483648, binary:
i, int: 59081716, binary:
~i, int: -59081717, binary:
-i, int: -59081716, binary:
j, int: 198850956, binary:
i & j, int: 58720644, binary:
i | j, int: 199212028, binary:
i ^ j, int: 140491384, binary:
i << 5, int: 1890614912, binary:
i >> 5, int: 1846303, binary:
(~i) >> 5, int: -1846304, binary:
i >>> 5, int: 1846303, binary:
(~i) >>> 5, int: 132371424, binary:
數字的二進製表示形式被稱為「有符號的2的補碼」。
Ⅲ 用JAVA如何取1831的個位數,、十位數、百位數和千位數的數值
int n=1831;
System.out.println("塵戚個位 "+ (n % 10));
System.out.println("十位 "+ (n % 100)/10);
System.out.println("百派纖陵位 "+ (n % 1000)/豎唯100);
System.out.println("千位 "+ (n /1000));
Ⅳ java 如何判斷字元串中某個位置的值 用substring能解決嗎/
substring(參乎謹數)是java中截取字元串的一個方法
有兩種傳參方式
一種是歲早基public String substring(int beginIndex)
返回一個新的字元串,它是此字元串的一個子字元串。該子字元串從指定索引處的字元開睜喊始,直到此字元串末尾。
另一種是public String substring(int beginIndex, int endIndex)
返回一個新字元串,它是此字元串的一個子字元串。該子字元串從指定的 beginIndex 處開始,直到索引 endIndex - 1 處的字元。因此,該子字元串的長度為 endIndex-beginIndex。
詳情請參考API java.lang.String
Ⅳ 關於Java數據類型的位
計算機計算的基本單位是bit,一般叫"字",也叫「位」。
「字」的取值是0和1。.
而字對於一般的軟體計算來說,太小了,所以將8個字放在一起形成byte(位元組)。
這個byte也叫位,因彎氏為在java里一般不計算bit,byte被當做最基本得計算單位。
數據岩明類型使用位數的多少,主要是為方便空間的控制。
一般我們整形計算的時候要使用int型的變數。
有的時候int型不能滿足計算要求,就要使用long型的。
但是一旦聲明了一個long型的變數,在這個變數的生存周期結束前,它就永遠佔用64byte的空間粗鬧告。這在早起對計算機的負擔是很大的。所以設計了不同的變數類型,方便程序員控製程序運行空間的大小
Ⅵ java 取二進制數值每一位數值
用&操作,比方說00001010,毀旦
要取激余耐倒數第二位的值(1),其值為:明春00001010&00000010
要取倒數第三位的值(0),其值為:00001010&00000100
要取倒數第四位的值(1),其值為:00001010&00001000
依次類推即可。
Ⅶ java 輸入一個整數(小於10位),求各位數的值.
以字元串的形式輸入這個整數, 這樣就可以把它當作字元串來處理.
或者是以整數的形式輸入這個數, 再用雀褲Integer.toString(int i) 方法把這個數轉換成字元串. 一旦轉換成字元串, 取各個數搏陸位上的值就方便頃銀簡多了
Ⅷ 用JAVA如何取1831的個位數,十位數,百位數,千位數,的數值
個位數=1831%10
十位數=183%10
百位數=18%10
千位數=1%10
int i;
i = System.in.read(); //實際上譽晌要捕獲異常
int units,tens,hundreds,thousands;
units = i%10;
tens = (i/10)%10;
hundreads = (i/100)%10;
thousands =(1/1000)%10;
然後再慧鎮用System.out.print();函數慶碧鋒輸出結果就好
Ⅸ java定義一個五位數,將這個五位數的每一位上的值取出
int k = 80000;
int[] bit = new int[5];
for(int i=5; i>0; i--) {
int temp = (int) Math.pow(10, i-1); //獲得10的大掘(i-1)次方值
bit[i-1] = k / temp; //通過除法取整運算獲得每一位的值運敬
k = k - bit[i-1] * temp; //減去最高位的值
}
每一位最終的旁仿慎值由低位到高位保存在數組bit中
Ⅹ java如何返回某個整數指定位數的值
改正
保證位數不扮纖御超出的前提下,只需一句豎如
{
return (整數%(e(位數))/(e(位數-1));
}
e是10的縮寫,e(x),代表10的x次廳岩方