python爬蟲爬取安居客並進行簡單資料分析
JAVA基礎語法
註釋,識別符號,關鍵字
-
註釋
註釋不會執行,是給寫程式碼的人看的,相當於筆記
1.1 單行註釋 //註釋內容
1.2 多行註釋 /* 註釋內容 */
public static void main(String [] args){ //這裡是單行註釋 /*這裡是多行註釋 這裡是多行註釋 這裡是多行註釋*/ System.out.println("Hello World!") }
-
識別符號
2.1關鍵字
系統定義好的,有特殊含義與用處,一般在編輯器裡面都會有特殊顏色
-
java所有組成部分都需要名字。類名,變數名及方法名都被稱為識別符號
-
識別符號是大小寫敏感的
-
不能使用關鍵字作為變數名或方法名
-
可以使用中文名去命名,但一般不建議,也不建議使用拼音
-
資料型別
java是強型別語言,變數的使用要符合規定,所有的變數都必須先定義才能使用
- 資料型別 變數名=值;可以用逗號來隔開宣告多個同類型變數
java的資料型別分為兩大類:基本型別,引用型別
- 基本型別
int num=10;
byte num2=20;//-128~127之間
short num3=30;
long num4=30L;//Long型別資料要在數字後面加個L
//小數:浮點數
float num5=50.1F;//float型別資料要在後面加F
double num6=3.141592653589793238462643 ;
//字元型別
char name='王';//只能有一個字元
//字串
String name2="王二小"
//布林值:是非
boolean flag=true;
boolean flag2=false;
- 整數拓展:進位制 二進位制0b 十進位制 八進位制0 十六進位制0x
int i=12;//十進位制
int i2=012;//八進位制
int i3=0x12;//十六進位制 0~9 A~F
-
浮點數拓展 float能表示的字長是有限的,當資料很大時存在舍入誤差 接近但不等於
最好完全避免使用浮點數進行比較
浮點數不能用來比較,銀行業務怎麼表示?—使用BigDecimal 數學工具類
float
-
字元拓展
char c1='a'; char c2='中'; System,out.println(c1); //a System,out.println((int)c1); //97 //強制轉換,將字元型別的a強制轉換成了int型別,輸出了碼錶對應的數字 System,out.println(c2); //中 System,out.println((int)c2); //20013 //所有的字元本質還是數字 //轉義字元\ // \t 製表符 // \n 換行 System,out.println("hello\tworld"); //輸出 hello world 中間有空格 System,out.println("hello\nworld"); //輸出 hello // world
-
布林值拓展
boolean flag=true; if(flag==true){} if(flag){} //這兩個if語句是一樣的,推薦使用後面這個
型別轉換
由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換
低-------------------------------------->高
byte,short,char->int->long->float->double
運算中,不同型別的資料先轉化為統一型別,然後進行運算
int i=128;
byte b=(byte)i; //需要先將int型別的i轉換為byte型別再賦值給byte型別的b
//強制轉換 (型別)變數名 將括號後的變數強制轉換成括號中的型別,包括基本資料型別與引用資料型別
System,out.println(i); //輸出結果128
System,out.println(b); //輸出結果-128 因為Byte最大值為127,將128強制轉換時出現記憶體溢位 //記憶體溢位
//強制轉換 (型別)變數名 高->低
//自動轉換 低->高 不用任何操作
int i=128; //輸出結果128
double b=i; //輸出結果128.0 //double型別比int更高,將int型別的i賦值給double型別的b不用額外操作
/*
注意點: 1.不能對boolean型值進行轉換
2.不能把物件型別轉換為不相干的型別
3.把高容量型別轉換到低容量時,需要強制轉換
4.轉換的時候可能存在記憶體溢位,精度問題
*/
System,out.println((int)23.7)); //輸出23 精度問題
System,out.println((int)-45.89f)); //輸出45 精度問題
char c='a';
int d=c+1;
System,out.println(d); //輸出98
System,out.println((char)d); //輸出b
//操作比較大的數的時候,注意溢位問題
//JDK7新特性,數字之間可以用下劃線分割,下劃線_不會被輸出
int money=10_0000_0000;
System,out.println(money); //輸出1000000000
int years=20;
int total=money*years;
System,out.println(total); //正常思路應該輸出200億,實際輸出-1474836480 計算的時候溢位了
long total2=money*years;
System,out.println(total2); //此時輸出依然是-1474836480;計算時money和years都是int型別,計算結果還是預設為int,計算完再轉化成long,
//轉換前已經出問題了
long total3=money*((long)years);
System,out.println(total3); //輸出200億,計算前已經將years轉換成了long,int型別和long型別的一起運算,會自動將int提升為long,輸出long型別的結果
變數,常量
變數
變數:可以變化的量 方程中的x
-
Java是一種強型別語言,每個變數必須宣告其型別
-
Java變數是程式中最基本的儲存單位,其要素包括變數名,變數型別和作用域
格式 type varName [=value] [{,varcName[=value]}];
//資料型別 變數名=值; 可以用逗號隔開來宣告多個同類型變數
例:int a=1,b=3;但不建議這樣定義;要保證程式的可讀性
-
注意事項 :
-
每個變數都有型別,型別可以是基本型別,也可以是引用型別
-
變數名必須是合法的識別符號
-
變數宣告是一條完整的語句,因此每一個宣告都必須以分號結束
```java
-
int a=1;
int b=2; //基本型別
String name=“果果”;
char x=“X”;
double pi=3.14;
```
變數作用域
-
類變數
- static修飾
-
例項變數
- 從屬於物件(屬於這個類)
-
區域性變數
- 定義在方法內部,必須宣告和初始化值,在方法內有效
public class Demo{ //類變數 static static double salary=2500; //屬性:變數 //例項變數:從屬於物件(屬於這個類) String name; int age; //main方法 public static void main(String [] args){ //區域性變數:必須宣告和初始化值 int i; //宣告變數i並給它初始化賦值;區域性變數定義了就能用 System.out.println(i); //變數型別 變數名字=new Demo(); Demo demo =new Demo(); System.out.println(demo.age); //例項變數如果不自行初始化,會有這個型別的預設值 //數值型別預設值0或0.0;boolean預設值是false;String型別預設值null;除了基本型別,其餘的初始值都是null System.out.println(salary); //salary是static修飾的類變數,方法可以直接呼叫 } //其他方法 public void add(){ //在這個方法裡面就無法使用i,i是屬於main方法的區域性變數 } }
常量
-
常量:初始化後不能再改變值;是不會變動的值,用final修飾
-
所謂常量可以理解為一種特殊的變數,它的值被設定後,在程式執行過程中不允許被改變
-
常量名一般使用大寫字元
final 常量名=值; final double PI=3.14;
public class demo{ //修飾符不存在先後順序,final放在static前面或者後面都一樣 static final double PI=3.14; public static void main(String []args){ System.out.println(PI); } }
運算子
Java語言支援如下運算子:
-
算數運算子:+ , - , * , / , %取餘、模運算 , ++ , –
-
public class Demo01 { public static void main(String[] args) { //二元運算子 int a=10; int b=20; int c=21; System.out.println(a+b); //30 System.out.println(a-b); //-10 System.out.println(a*b); //200 System.out.println(a/b); //0 a,b都是int型別,計算後為0.5,int只擷取整數部分為0 System.out.println(a/(double)b); //0.5 計算前將其中一個強轉為double,結果為double型別0.5 System.out.println(c%a); //1 % 取餘,模運算 21/10=2...1 } }
public class Demo4 { public static void main(String[] args) { //++ -- 自增,自減 一元運算子 int a=3; int b=a++; //執行這段程式碼後a再自增,是先把a的值賦給b,a再自增;執行完這段程式碼,b=3,a=4 int c=++a; //執行這段程式碼前a先自增,是a先自增,變成5以後,再將值5賦給c System.out.println(a); System.out.println(b); System.out.println(c); //常用語迴圈語句多次執行條件判斷 //冪運算 2^3 2*2*2=8 //在Java中沒有冪運算子^,而是使用Math工具類的pow()方法;很多複雜運算沒有相應運算子,會使用工具類來運算 System.out.println(Math.pow(2, 3)); //8.0 } }
-
賦值運算子:= a=10 把10賦值給a
-
關係運算符:> , < , >= , <= , 等於(java中等於是用兩個,一個=是賦值) , != 不等於,instanceof
public class Demo3 { public static void main(String[] args) { //關係運算符返回結果:boolean true false //常跟if一起用來做條件判斷 int a=10; int b=20; System.out.println(a>b); //false System.out.println(a<b); //true System.out.println(a==b); //false System.out.println(a!=b); //true } }
-
邏輯運算子:&& 與, ||或 , !非
public class Demo05 { public static void main(String[] args) { // 與(and) 或(or) 非(取反) boolean a=true; boolean b=false; System.out.println("a&&b "+(a&&b)); //false System.out.println("a||b "+(a||b)); //true System.out.println("!(a&&b) "+(!(a&&b))); //true } }
-
位運算子:& ,| ,^ ,~ ,>> ,<< ,>>>
位運算,乘以二相當於把所有二進位制位左移1位;除以二右移1位
-
條件運算子:三元運算子 ? :
public class Demo8 { public static void main(String[] args) { //x ? y : z //如果x==true,則結果為y,否則結果為z int score =80; String type=score<60 ?"不及格" : "及格"; //如果成績低於60,則型別為不及格;否則為及格 System.out.println(type); } }
-
拓展賦值運算子:+= , -+ , *= , /=
int a=10; int b=20; a+=b; //a=a+b a-=b; //a=a-b //字串連線符 +的運算式中,只要出現了String型別的字串,就會將所有引數都轉化成字串然後拼接起來;如果其他計算在字串之前,會先運算完再轉化成字串 拼接;字串之後的計算不會執行,會直接轉化成字串拼接 int a=10; int b=20; System.out.println(a+b); //30 此處是輸出int型別整數30 System.out.println(""+a+b); //1020 此處是輸出字串1020 System.out.println(a+b+""); //30 此處是輸出字串30;a+b在前面,先運算再轉化成字串
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-afuUxcCd-1608324532754)(C:\Xiang\圖片\微信圖片_20201219042342.png)]
包機制,JavaDoc
包實際就是資料夾
命名規範:一般利用公司域名倒置作為包名
為了能使用某個包中的成員,需要在Java程式中明確匯入該包;使用import語句可以完成該功能**(實際上idea能完成自動導包)**