java學習筆記 part1
java
- Test.java,文件名和java類名稱一致
public class Test{
public static void main(String[] args){
System.out.println("hello word");
}
}
- jvm,java虛擬機,真正運行java程序的地方
- 核心類庫,java自帶的程序,給程序員調用
- jRE:java運行環境,包括jvm,核心類庫
- JDK:java開發工具包
- java跨平臺的原理就是jvm虛擬機
java 基礎語法
注釋
- 注釋不影響程序運行的原因就是,編譯后的class文件中,沒有注釋
//,單行注釋
/* 多行注釋 /
/* 文檔注釋 */,可以自動提取到程序說明中去
字面量
數據在程序中的書寫格式
- 整數
- 小數
- 字符
- 字符串
- 布爾
變量
存儲數據的內存區域
變量定義的格式 int i = 1;
public class Test{
public static void main(String[] args){
double moeny = 6.0;
System.out.println(moeny);
moeny += 4.0;
System.out.println(moeny);
System.out.println("------------------------");
int age = 21;
System.out.println(age);
age = 25;
System.out.println(age);
}
}
變量使用注意事項
public class Test{
public static void main(String[] args){
//變量要先聲明后使用
int a = 23;
//變量聲明后不能存儲其他類型數據
//變量的有效范圍,一對大括號直接,同一范圍內不能定義兩個相同的便利名
{
int b =1;
}
System.out.println(b);//找不到b
//變量定義時,可以沒有初始化值,使用的時候必須初始化值
int c ;
c = 12;
}
}
數據類型
基本數據類型-8種
1. 整數類型
java各整數類型有固定的表數范圍和字段長度
java整型常量默認為int,long類型復制時,要在變量值后面加L,long i = 3L
| 類型 | 占用存儲空間 | 表數范圍 |
|---|---|---|
| byte | 1字節 | -128 - 127 |
| short | 2字節 | -215 - 215-1 |
| int(默認) | 4字節 | -231 - 231-1 |
| long | 8字節 | -263 - 263-1 |
2. 浮點類型
java浮點型常量默認為double
float類型變量需要在變量值之后加F,float i = 0.1f
| 類型 | 占用存儲空間 | 表數范圍 | 精度 |
|---|---|---|---|
| 單精度float | 4字節 | -2128 - 2128 | 7位有效數字 |
| 雙精度double(默認) | 8字節 | -21024 - 21024 | 16位有效數字 |
3. 字符類型
char,用單引號括起來的單個字符,char i = 'z',范圍0-65535,占用兩個字節
轉義字符
| 轉義字符 | 解釋 |
|---|---|
| \b | 退格符 |
| \n | 換行 |
| \r | 回車 |
| \t | 制表 |
| \" | 雙引號 |
| \' | 單引號 |
| \ | 反斜線 |
4. 布爾類型
boolean類型只允許true或false,不允許0或其他數代替
boolean b = true
練習一下
public class Test{
public static void main(String[] args){
System.out.print("333\n");//使用換行符
System.out.println("666");//相當于另起一行
System.out.println("444");
byte b = 1;
System.out.println(b);
short s = 2;
System.out.println(s);
int i = 3;
System.out.println(i);
long k = 3L;
System.out.println(k);
float u = 0.3F;
System.out.println(u);
double d1 = 0.7;
System.out.println(d1);
char o = '6';
System.out.println(o);
boolean b1 = true;
System.out.println(b1);
}
}
引用數據類型
引用類型,都可以用null作為值,初始化時可以賦值為null
String類
值是不可變的,用來接收字符串
//可以拼接
String s3 = "h" + "e";
String s = "hello word";
System.out.println(s);
int i1 = 1;
int i2 = 1;
//以上會在內存中存儲兩個1的值
String s1 = "hello";
String s2 = "hello";
//內存中只存一個,兩個變量名會引用同一個值,,兩個變量名指向同一地址
關鍵字和標識符
關鍵字
是java自己保留的單詞,特殊功能,不能用做命名
標識符
是用來給類和方法起名字的規矩
- 數字,字母,下劃線和$組成
- 不能以數字開頭,不能是關鍵字,區分大小寫
- 變量名稱:全英文,有意義,首個單詞首字母小寫,后面的單詞首字母大寫,,駝峰模式
- 類名:全英文,所有單詞首字母大寫,駝峰模式
類型轉換,運算符,鍵盤錄入
自動類型轉換
- 容量小的類型,可以直接轉換為容量大的類型
- byte,short,char之間不能相互轉換,三個在計算時,會首先都轉換成int類型,解決計算后最大的范圍
- 多種數據混合計算的時候,系統會首先將所有數據轉換成容量最大的進行計算
- 數字類型的運算中,多個相同類型的變量參與運算,變量要先轉化為相對應的數據類型的默認類型,(兩個byte類型進行運算時,先把byte類型轉換為整型的默認類型int然后進行計算,結果也是int類型),變量的數據類型的容量比默認的小的情況

public class Test{
public static void main(String[] args){
/* int i = 0;//聲明并初始化變量
i = 1;//重新賦值
int k = 20;
i = k ;
short s =9;
short s0 = 11;
s0 = s;//將右邊的賦值左邊的
byte b = 1;
int m = b;//都屬于整數型,小的容量可以直接賦值給大容量
int a = 0;
byte b= a;//編譯期異常,javac的時候才能發現
int i = 1;
short s = 2;
byte b = 3;
int res = i + s + b ;
//計算過程中int范圍最大,short和byte先轉換成int類型,然后再計算
char c = 'a';
byte bb = 2;
int k = c + bb;
//char類型在與數字進行數學運算時,轉換為對應的ascii的值,在進行計算
String str = "abb";
int a = 1;
*/
//任何類型的值和字符串使用連接符,最后會變成字符串
System.out.println(3 + 4 + "hello");//分部計算,先進行數學運算,然后和字符串拼接7hello
System.out.println("hello" + 3 + 4);//第一個為String,后面會拼接,hello34
System.out.println('a' + 1 + "hello");//char可以進行數學運算,所以先相加后拼接98hello
//使用+進行運算時候,其中有字符串的情況下,從字符從之前的+開始后面都需要拼接
}
}
強制類型轉換
強制將范圍大的類型轉換為范圍小的類型
public class Test{
public static void main(String[] args) {
//強制類型轉換
int a = 2110;
byte b =(byte)a;
System.out.println(b);//62,只把二進制形式的最后8位放進byte的存儲區域
//強制類型轉換可能造成數據的溢出
//浮點型轉換成整型,直接丟掉小數部分,保留整數部分返回
double sss = 22.22;
int ss =(int)sss;
System.out.println(ss);//22
}
}
運算符
基本算數運算符
+,-,*,/,%
public class Test{
public static void main(String[] args) {
/*
int a = 10;
int b = 3;
System.out.println(a - b);
System.out.println(a + b);
System.out.println(a * b);
System.out.println(a / b);//兩個int型,最后會轉為int,只有整數,丟棄小數
System.out.println(a * 1.0 /b);//就會有小數
System.out.println(a % b);//1,
*/
//實例,數值拆分,三位數拆分打印
int data = 234;
int ge = data % 10;
int shi = data / 10 % 10;
int bai = data / 100;
System.out.println(bai);
System.out.println(shi);
System.out.println(ge);
}
}
+,做連接符
+,與字符串進行運算的時候用作連接符,結果依然是一個字符串
自增,自減
public class Test{
public static void main(String[] args) {
//自增自減
//int a = 10;
//int b = a++;//先賦值后運算
//int a = 10;
//int b = ++a;//先運算后賦值
//int a = 10;
//int b = a--;//先賦值后運算
//int a = 10;
//int b = --a;//先運算后賦值
//案例
int c = 10;
int d = 5;
int rs3 = c++ + ++c - --d - ++d + 1 + c;
System.out.println(c);//12
System.out.println(d);//5
System.out.println(rs3);//26
}
}
賦值運算符
+=,-=,*=,/=,%=
會自動使用,強制類型轉換
public class Test{
public static void main(String[] args) {
//賦值運算符
int i= 10;
i += 1;
System.out.println(i);
int a = 10;
a -= 2;//a = (int)(a-2),進行強制類型抓換
System.out.println(a);
byte b = 10;
byte n = 20;
b += n;//b = (byte)(b+n)強制類型轉換
System.out.println(b);
}
}
關系運算符
對數據進行條件判斷的符號,最終返回一個boolean
==,<= ,>=,<,>,!=
public class Test{
public static void main(String[] args) {
//關系運算符
int a = 10;
int b = 10;
boolean rr = a == b;
boolean tt = a != b;
System.out.println(rr);
System.out.println(tt);
}
}
邏輯運算符
異或^:兩個值相同結果為假,兩個值不同結果為真
- 異或:兩個值相同時為假,兩個值不同時為真
- &:無論左邊真假右邊都要參與運算
- &&:左邊為真時,右邊參與運算,左邊為假時,右邊不參與運算
- ||:左邊為真右邊不參與運算
| a | b | a&b | a|b | !a | a^b | a&&b | a||b |
|---|---|---|---|---|---|---|---|
| true | true | true | true | false | false | true | true |
| true | false | false | true | false | true | false | true |
| flase | true | false | true | true | true | false | true |
| flase | flase | false | false | true | false | false | false |
public class Test{
public static void main(String[] args) {
//邏輯運算符
double size = 99;
double ss = 16;
System.out.println(size > 80 & ss > 2);
System.out.println(size > 80 | ss > 288);
System.out.println(size > 80 & ss > 2);
}
}
三元運算符
條件表達式 ? 表達式1 :表達式2;
條件表達式為真,執行表達式1 ,否則執行表達式2
public class Test{
public static void main(String[] args) {
/*
//三元運算符
double s = 99;
String ss = s >= 60 ? "考試通過" : "掛科";
System.out.println(ss);
//案例,兩個整數最大值
int a = 10;
int b = 2000;
int max = a > b ? a : b;
System.out.println(max);
*/
//三個整數最大值
int a = 10;
int b = 20;
int c = 30;
int max = a > b ? a : (b > c ? a : c);
System.out.println(max);
}
}
運算符的優先級

鍵盤錄入
API應用程序編程接口
-
java寫好的程序,可以直接調用
-
提供了api文檔,代表得到鍵盤掃描器對象
import java.util.Scanner;
//導入包
public class Test{
public static void main(String[] args) {
try (//得到鍵盤掃描器對象
var SC = new Scanner(System.in)) {
//調用sc對象的功能,等待接收用戶輸入的數據
//SC.nextInt();//等待用戶輸入數據,直到用戶輸入完成,安下回車鍵
System.out.println("輸入年齡");
int age = SC.nextInt();
System.out.println("年齡是" + age);
System.out.println("輸入名稱");
String name = SC.next();
System.out.println("名稱是" + name);
}
}
}
程序流程控制
if分支結構
import java.util.Scanner;
import javax.lang.model.util.ElementScanner14;
//導入包
public class Test{
public static void main(String[] args) {
//if分支結構,格式1:if(條件表達式){代碼..}
int heartBeat = 30;
if(heartBeat < 60 || heartBeat > 100){
System.out.println("數據是," + heartBeat + ",不合適");
}
System.out.println("結束");
//格式2,if(條件表達式){代碼...} slse {代碼...}
double money = 9999;
if(money >= 666){
System.out.println("有錢");
}
else{
System.out.println("窮逼");
}
//格式3,if(){..}else if(){...}
int score = 199;
if(score >= 0 && score < 60){
System.out.println("c");
}else if(score >= 60 && score < 80){
System.out.println("b");
}else if(score >= 80 && score < 90){
System.out.println("a");
}else if(score >= 90 && score <= 100){
System.out.println("a+");
}else{
System.out.println("輸入不正確");
}
}
}
switch分支結構
匹配條件執行分支
- 執行表達式的值,使用值和case后的值進行匹配
- 匹配哪個case為true就執行,遇到break,跳出switch
- 如果都不匹配,執行default
注意事項
- 表達式類型只能是byte,int,char,jdk5開始枚舉,jdk7開始String,不支持double,float,long
- case給出的值只能是字面量,不能是變量
- 要寫break,不然會穿透
import javax.print.DocFlavor.STRING;
public class Test{
public static void main(String[] args) {
//switch
String day = "周三";
switch (day){
case "周一":
System.out.println("今天周一");
break;
case "周二":
System.out.println("今天周二");
break;
case "周三":
System.out.println("今天周三");
break;
case "周四":
System.out.println("今天周四");
break;
case "周五":
System.out.println("今天周五");
break;
case "周六":
System.out.println("今天周六");
break;
case "周日":
System.out.println("今天周日");
break;
default:
System.out.println("今天周八");
}
//
}
}
- 穿透現象。多個case分支的功能代碼一樣,可以利用穿透性把流程集中起來出來,簡化代碼
import javax.print.DocFlavor.STRING;
public class Test{
public static void main(String[] args) {
//穿透
int m = 7;
switch (m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(m + "月31天");
break;
case 2:
System.out.println(m + "月閏年29天,非閏年28");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(m + "月30天");
break;
default:
System.out.println("數據錯誤");
}
}
}
for循環結構
//if (初始化語句;循環條件;迭代語句)
if (int i = 0; i < 3; i++){
System.ouy,println("helloword")
}
public class Test{
public static void main(String[] args) {
/*
//穿透
for(int i = 0; i < 3; i++){
System.out.println("helloword");
}
//案例,1-5的和
int sum = 0;//進行存儲
for (int i = 1; i < 6; i++) {
sum += i;//累加
}
System.out.println(sum);
//1-10之間的奇數和,不能被2整除的數叫做奇數
int sum = 0;
for (int i = 1; i < 11; i++) {
if (i % 2 == 1){
sum += i;
}
}
System.out.println(sum);
int sum = 0;
for (int i = 1; i < 11; i += 2) {
//1.3.5.7.9
sum += i;
}
System.out.println(sum);
*/
//水仙花數。三位數,個位,十位,百位,數字的立方=原數
int count = 0; //統計個數
for (int i = 100; i < 1000; i++) {
//識別除個位,十位,百位
int bai = i / 100;
int shi = i / 10 % 10;
int ge = i % 10;
//判斷是不是水仙花數
if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge){
System.out.print(i + "\t");
count += 1;
}
}
System.out.println("\n" + count + "個");//先換行
}
}
while循環
- 知道循環次數用for,不知道循環次數用while
初始化語句
while (循環條件){
循環體語句(被重復執行的代碼);
迭代語句;
}
public class Test{
public static void main(String[] args) {
/*
//穿透
for(int i = 0; i < 3; i++){
System.out.println("helloword");
}
//案例,1-5的和
int sum = 0;//進行存儲
for (int i = 1; i < 6; i++) {
sum += i;//累加
}
System.out.println(sum);
//1-10之間的奇數和,不能被2整除的數叫做奇數
int sum = 0;
for (int i = 1; i < 11; i++) {
if (i % 2 == 1){
sum += i;
}
}
System.out.println(sum);
int sum = 0;
for (int i = 1; i < 11; i += 2) {
//1.3.5.7.9
sum += i;
}
System.out.println(sum);
*/
//水仙花數。三位數,個位,十位,百位,數字的立方=原數
int count = 0; //統計個數
for (int i = 100; i < 1000; i++) {
//識別除個位,十位,百位
int bai = i / 100;
int shi = i / 10 % 10;
int ge = i % 10;
//判斷是不是水仙花數
if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge){
System.out.print(i + "\t");
count += 1;
}
}
System.out.println("\n" + count + "個");//先換行
}
}
do while
- 先執行在判斷循環條件
初始化語句;
do{
循環體語句;
迭代語句;
}while(循環條件);
public class Test{
public static void main(String[] args) {
//do while,先執行一次,再判斷
int i = 0;
do{
System.out.println("HELLO");
i += 1;
}while(i < 3);
}
}
死循環
- 一致循環執行下去,沒有干預不會停下來
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
//for (;;) {
// System.out.println("hello");
//}
//while(true){//經典寫法
// System.out.println("word");
//}
//do{
// System.out.println("sss");
//}while(true);
//案例
int truepasswd = 520;//正確密碼
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("請輸入正確密碼");
int passwd = sc.nextInt();
if(passwd == truepasswd){
System.out.println("登錄成功");
break;//可以跳出循環
}else{
System.out.println("密碼錯誤");
}
}
}
}
循環嵌套
- break:用于跳出并結束循環,或者結束所在switch分支
- continue:跳出當前循環,進入下一次循環
public class Test{
public static void main(String[] args) {
//break,continue
for (int i = 0; i < 5; i++) {
System.out.println("heoole");
if (i == 2){
break;
}
}
//continue,跳出循環檔次執行,進入下一次執行
for (int i = 1; i < 6; i++) {
if(i==3){
continue;//跳出當此執行,進入下一次
}
System.out.println("hello" + i);
}
}
}
Random類,隨機數
- nestint(n),功能只能生成,0-(n-1)之間的隨機數
- random r = new random();
- int number = r.nextint(10) + 1 //1-10
import java.util.Random;
public class Test{
public static void main(String[] args) {
//JAVA隨機數
//1.導包
//2.創建隨機數對象
Random r = new Random();
//3.調用nestint功能,可以返回一個整型的隨機數
for (int i = 0; i < 20; i++) {
int data = r.nextInt(10);
System.out.println(data);
}
//1-10==>-1==>(0-9)+1
//3-17==>-3==>(0-14)+3
int data = r.nextInt(10) + 1;
System.out.println(data);
}
}
案例
import java.util.Random;
import java.util.Scanner;
import javax.lang.model.element.Element;
import javax.lang.model.util.ElementScanner14;
public class Test{
public static void main(String[] args) {
//猜數字游戲1-100
Scanner sc = new Scanner(System.in);//鍵盤錄入新對象
Random num = new Random();//隨機數新對象
int data = num.nextInt(100) + 1;//減加法,生成1-100
while(true){
System.out.println("請猜測數字1-100");//提示信息
int number = sc.nextInt();//接收用戶輸入的數字
if(data == number){
System.out.println("***猜對了***" + "\n");
break;//猜對退出
}else if(data > number){
System.out.println("猜小了" + "\n");
}else{
System.out.println("猜大了" + "\n");
}
}
}
}
數組
- 用來存儲一批數據類型相同的數據
10,20,30,40,50
int[] arr={10,20,30,40,50};
張三 李四
String[] names={"張三","李四"}
數組定義
- 靜態初始化數組
- 當前已知道存入到數據,用靜態初始化
- 當前還不清楚存入的數據,用動態初始化
定義數組的時候給數組賦值
數組一旦定義出來,程序執行的 過程中,長度和類型就固定了
public class Test{
public static void main(String[] args) {
//靜態初始化數組
//數據類型[] 數組名稱 = new 數據類?
主站蜘蛛池模板:
福利成人午夜国产一区|
国产精品九九九一区二区|
国产日产亚洲系列av|
国产精品国产高清国产av|
国产偷自一区二区三区在线|
国产精品XXXX国产喷水|
久久久久人妻精品一区三寸|
在线中文字幕第一页|
河北真实伦对白精彩脏话|
国产精品久久久福利|
久久热这里只有精品99|
无码无需播放器av网站|
jizz国产免费观看|
中文字幕有码高清日韩|
金溪县|
国产精品成人午夜久久|
中文字幕av日韩有码|
国产成人亚洲老熟女精品|
无码国模国产在线观看免费|
av男人的天堂在线观看国产|
国产av综合色高清自拍|
亚洲av无码之国产精品网址蜜芽|
亚洲国产v高清在线观看|
亚洲欧美日韩愉拍自拍美利坚|
国产老熟女国语免费视频|
麻豆久久天天躁夜夜狠狠躁|
久久中文字幕无码一区二区|
国产乱子伦视频在线播放|
国产精品福利自产拍在线观看|
黄又色又污又爽又高潮|
亚洲中文字幕综合网在线|
夜夜高潮次次欢爽av女|
欧美激情 亚洲 在线|
免费又黄又爽1000禁片|
国产精品入口麻豆|
2020年最新国产精品正在播放
|
中文无码热在线视频|
热99久久这里只有精品|
亚洲色大成网站WWW久久|
国产女人高潮视频在线观看|
国产在线98福利播放视频|
