1. 程式人生 > 實用技巧 >Qt 的幾種透明效果(三種方法:調色盤,透明度屬性,自繪)

Qt 的幾種透明效果(三種方法:調色盤,透明度屬性,自繪)

資料型別:

整數

byteshortintlong四種基本資料型別表示整數,需要注意的是long型別,使用long修飾的變數需要在數值後面加上 L 或者 l,比如long num = 1L;,一般使用大寫L,為了避免小寫l與數值1混淆。

浮點數

floatdouble型別表示浮點數,即可以表示小數部分。需要注意的是float型別的數值後面需要加上F或者f,否則會被當成double型別處理。double型別的數值可以加上Dd,也可以不加。

char 型別

char 型別用於表示單個字元。需要將字元用單引號括起來char a = 'a',char 可以和整數互相轉換,如果字元a也可以寫成char a = 97

。也可以用十六進位制表示char a = '\u0061'

boolean 型別

boolean型別(布林型別)用於表示真值true或者假值false,Java 中布林值不能和整數型別或者其它型別互相轉換。

String

String s0 = "abc";

String s1 = new String("abd");

1.字串識別符號.length();返回一個int型別的整數(字串中字元數,中文字元也是一個字元)。

2.equals()方法,該方法的作用是判斷兩個字串物件的內容是否相同。如果相同則返回true,否則返回false

equalsIgnoreCase()意義同上 忽略大小寫

使用"=="比較的是兩個物件在記憶體中儲存的地址是否一樣。

3.字串連線有兩種方法:

  1. 使用+,比如String s = "Hello " + "World!"
  2. 使用String類的concat()方法

4.charAt()方法的作用是按照索引值(規定字串中第一個字元的索引值是 0,第二個字元的索引值是 1,依次類推),獲得字串中的指定字元。

delete(inta,intb)有兩個引數,使用時刪除索引從a開始(包含a)到b(不包含b)的所有字元;

deleteCharAt(inta)只有一個引數,使用時刪除索引為a的字元;

字串常用提取方法

方法返回值功能描述
indexOf(char ch) int 搜尋字元 ch 第一次出現的索引
indexOf(String value) int 搜尋字串 value 第一次出現的索引
lastIndexOf(char ch) int 搜尋字元 ch 最後一次出現的索引
lastIndexOf(String value) int 搜尋字串 value 最後一次出現的索引
substring(int index) String 提取從位置索引開始到結束的字串
substring(int beginindex, int endindex) String 提取 beginindex 和 endindex 之間的字串部分
trim() String 返回一個前後不含任何空格的呼叫字串的副本

位運算子

位運算子名稱描述舉例
& 按位與 如果相對應位都是 1,則結果為 1,否則為 0 (a&b),得到 12,即 0000 1100
按位或 如果相對應位都是 0,則結果為 0,否則為 1 ( a 丨 b )得到 61,即 0011 1101
^ 按位異或 如果相對應位值相同,則結果為 0,否則為 1 (a^b)得到 49,即 0011 0001
~ 按位補 翻轉運算元的每一位,即 0 變成 1,1 變成 0 (〜a)得到 -61,即 1100 0011
<< 按位左移 左運算元按位左移右運算元指定的位數 a<<2 得到 240,即 1111 0000
>> 按位右移 左運算元按位右移右運算元指定的位數 a>>2 得到 15 即 1111
>>> 按位右移補零 左運算元的值按右運算元指定的位數右移,移動得到的空位以零填充 a>>>2 得到 15 即 0000 1111

邏輯運算子

邏輯運算子名稱描述型別舉例
&& 或 & 當且僅當兩個運算元都為真,條件才為真 雙目運算子 (a && b) 或 (a & b) 為假
|| 或 | 兩個運算元任何一個為真,條件為真 雙目運算子 (a || b) 或 (a | b) 為真
! 用來反轉運算元的邏輯狀態。如果條件為真,則邏輯非運算子將得到假 單目運算子 (!a)為假
^ 異或 如果兩個運算元邏輯相同,則結果為假,否則為真 雙目運算子 (a ^ b) 為真

比較運算子

比較運算子名稱描述舉例
== 等於 判斷兩個運算元的值是否相等,如果相等則條件為真 (a == b) 為 false
!= 不等於 判斷兩個運算元的值是否相等,如果值不相等則條件為真 (a != b) 為 true
> 大於 判斷左運算元的值是否大於右運算元的值,如果是那麼條件為真 (a > b) 為 false
< 小於 判斷左運算元的值是否小於右運算元的值,如果是那麼條件為真 (a < b) 為 true
>= 大於等於 判斷左運算元的值是否大於或等於右運算元的值,如果是那麼條件為真 (a >= b) 為 false
<= 小於等於 判斷左運算元的值是否小於或等於右運算元的值,如果是那麼條件為真 (a <= b) 為 true

break,continue

break關鍵字經常用在條件和迴圈語句中,用來跳出迴圈語句。

continue關鍵字的作用是跳過迴圈體中剩餘的語句執行下一次迴圈。

陣列:

使用陣列前要宣告陣列。資料型別[ ] 陣列名;

public class JudgePrime {
    public static void main(String[] args){
        int [] ages = {12, 18, 9, 33, 45, 60};
        int i = 1;
        for(int age:ages){
            System.out.println("陣列中第"+i+"個元素是"+age);
            i++;
        }
    }
}

二維陣列:

資料型別 [][] 陣列名 = new 資料型別[行的個數][列的個數];

//或者
資料型別 [][] 陣列名;
陣列名 = new 資料型別[行的個數][列的個數];

//也可以
資料型別 [][] 陣列名 = {
{第一行值1,第一行值2,...}
{第二行值1,第二行值2,...}
...
}

//二維陣列的賦值和訪問,跟一維陣列類似,可以通過下標來逐個賦值和訪問,注意索引從 0 開始
陣列名[行的索引][列的索引] = 值;

例子:計算平均成績:

public class AverageScore {
    public static void main(String[] args) {
        int[] data = {61, 57, 95, 85, 75, 65, 44, 66, 90, 32};
        int sum = 0;
        for (int i = 0; i < data.length; i++) {
            sum += data[i];
        }
        System.out.println("平均成績:" + sum / data.length);
    }
}

迴圈讀取資料的方法

迴圈讀取String資料,當輸入exit時退出迴圈
        while (!in.hasNext("exit")) {
            System.out.println(in.nextLine());
        }
        //關閉輸入
        in.close();

另一種方法
if ((data[i] = in.nextLine()).equals("end")) {
break;
}

例子:

  • 獲取使用者的輸入資訊(字串)。
  • 當用戶輸入 end 時,結束輸入並列印使用者之前輸入的所有資訊(輸入的資訊數量不超過 100 個)。
import java.util.Scanner;

public class InputTest {
    public static void main(String[] args) {
        String[] data = new String[100];
        Scanner in = new Scanner(System.in);
        for (int i = 0; i < 100; i++) {
            if ((data[i] = in.nextLine()).equals("end")) {
                break;
            }
        }
        for (String a : data) {
            if (a.equals("end")) {
                break;
            }
            System.out.println(a);
        }
    }
}

建立物件的語法如下:

類名 物件名 = new 類名();

public class People {
    double height;
    int age;
    int sex;
    void cry(){
        System.out.println("wozaiku");
    }
    void laugh(){
        System.out.println("wozaixiao");

    }
    void printBaseMes(){
        System.out.println("wodeshengaoshi"+height+"cm");
        System.out.println("wodenianlingshi"+age+"sui");
        if(this.sex==0)
            System.out.println("woshinanxing");
        else
            System.out.println("woshinvxing");

    }
}
public class NewObject {
    public static void main(String[] args) {
        People LiLei = new People(); //建立一個People物件LiLei

        LiLei.height =170;
        LiLei.age = 20;
        LiLei.sex = 1;

        LiLei.printBaseMes();
    }
}

成員變數和區域性變數:

成員變數就是指的物件的屬性,是在類中定義,來描述物件的特性。

區域性變數,它是由類的方法定義,在方法中臨時儲存資料。

關鍵字:

final關鍵字可以修飾類、方法、屬性和變數

  1. final修飾類,則該類不允許被繼承,為最終類
  2. final修飾方法,則該方法不允許被覆蓋(重寫)
  3. final修飾屬性:則該類的屬性不會進行隱式的初始化(類的初始化屬性必須有值)或在構造方法中賦值(但只能選其一)
  4. final 修飾變數,則該變數的值只能賦一次值,即常量
private,protected,public
  1. private修飾的屬性或者方法,只能在當前類中訪問或者使用。如果想在主函式中使用,只能通過gettersetter方法進行呼叫
  2. 預設是什麼修飾符都不加,預設在當前類中和同一包下都可以訪問和使用。
  3. protected修飾的屬性或者方法,對同一包內的類和所有子類可見。
  4. public修飾的屬性或者方法,對所有類可見

Java中的類:

陣列:import java.util.Arrays;

方法描述
<T> List<T> asList(T... a) 返回由指定陣列構造的 List
void sort(Object[] a) 對陣列進行排序
void fill(Object[] a, Object val) 為陣列的所有元素都賦上相同的值
boolean equals(Object[] a, Object[] a2) 檢查兩個陣列是否相等
int binarySearch(Object[] a, Object key) 對排序後的陣列使用二分法查詢資料

java資料型別中的坑:string為什麼不是八種資料型別的一個:那八種資料型別是基本型別,而string是引用資料型別。

基本型別僅表示簡單的資料型別,引用型別可以表示複雜的資料型別,還可以操作這種資料型別的行為

java虛擬機器處理基礎型別與引用型別的方式是不一樣的,對於基本型別,java虛擬機器會為其分配資料型別實際佔用的記憶體空間,而對於引用型別變數,他僅僅是一個指向堆區中某個例項的指標。

例子:

  • 使用 Arrays 將陣列 [6, 17, 92, 32, 58, 22, 84, 66, 36, 33] 進行排序。
  • 找出排序後 33 所在的位置。
import java.util.Arrays;

public class ArraysTest {
    public static void main(String[] args) {
        int[] arr = {6, 17, 92, 32, 58, 22, 84, 66, 36, 33};
        Arrays.sort(arr);
        System.out.println(Arrays.binarySearch(arr, 33));
    }
}

StringBuilder :

構造方法說明
StringBuilder() 構造一個其中不帶字元的 StringBuilder,其初始容量為 16 個字元
StringBuilder(CharSequence seq) 構造一個 StringBuilder,它包含與指定的 CharSequence 相同的字元
StringBuilder(int capacity) 構造一個具有指定初始容量的 StringBuilder
StringBuilder(String str) 並將其內容初始化為指定的字串內容

方法返回值功能描述
insert(int offsetm,Object obj) StringBuilder 在 offsetm 的位置插入字串 obj
append(Object obj) StringBuilder 在字串末尾追加字串 obj
length() int 確定 StringBuilder 物件的長度
setCharAt(int index,char ch) void 使用 ch 指定的新值設定 index 指定的位置上的字元
toString() String 轉換為字串形式
reverse() StringBuilder 反轉字串
delete(int start, int end) StringBuilder 刪除呼叫物件中從 start 位置開始直到 end 指定的索引(end-1)位置的字元序列
replace(int start, int end, String str) StringBuilder 使用一組字元替換另一組字元。將用替換字串從 start 指定的位置開始替換,直到 end 指定的位置結束
Calendar: GregorianCalendar 類
構造方法說明
GregorianCalendar() 建立的物件中的相關值被設定成指定時區,預設地點的當前時間,即程式執行時所處的時區、地點的當前時間
GregorianCalendar(TimeZone zone) 建立的物件中的相關值被設定成指定時區 zone,預設地點的當前時間
GregorianCalendar(Locale aLocale) 建立的物件中的相關值被設定成預設時區,指定地點 aLocale 的當前時間
GregorianCalendar(TimeZone zone,Locale aLocale) year - 建立的物件中的相關值被設定成指定時區,指定地點的當前時間

TimeZone 類

//太平洋時區的 ID 為 PST
TimeZone tz0 = TimeZone.getTimeZone("PST")
//getDefault()可以獲取主機所處時區的物件
TimeZone tz1 = TimeZone.getDefault()
//呼叫Locale類的構造方法
Locale l0 = new Locale(String language)
Locale l1 = new Locale(String language, String country)
Locale l2 = new Locale(String languge, String country, String variant)

//呼叫Locale類中定義的常量
Locale  l1 = Locale.CHINA

Date:

構造方法說明
Date() 構造一個 Date 物件並對其進行初始化以反映當前時間
Date(long date) 構造一個 Date 物件,並根據相對於 GMT 1970 年 1 月 1 日 00:00:00 的毫秒數對其進行初始化

Scanner:

import java.util.Scanner;

Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();