1. 程式人生 > 實用技巧 >python爬蟲爬取安居客並進行簡單資料分析

python爬蟲爬取安居客並進行簡單資料分析

JAVA基礎語法

註釋,識別符號,關鍵字

  1. 註釋

    註釋不會執行,是給寫程式碼的人看的,相當於筆記

    1.1 單行註釋 //註釋內容

    1.2 多行註釋 /* 註釋內容 */

    public static void main(String [] args){
        //這裡是單行註釋
        /*這裡是多行註釋
        這裡是多行註釋
        這裡是多行註釋*/ 
        System.out.println("Hello World!")       
    }
    
  2. 識別符號

    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
    f=0.1f; //0.1 double d=1.0/10; //0.1 System,out.println(f==d); //flase float d1=3333333333333333f; float d2=d1+1; //float能表示的字長是有限的,當資料很大時存在舍入誤差 接近但不等於 System,out.println(d1==d2); //true
  • 字元拓展

    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能完成自動導包)**