Java基础语法学习

1. 注释

  • 单行注释:

    //单行注释
    
  • 多行注释:

    /*多行注释
    多行注释
    多行注释
    多行注释
    */
    

2. 关键字与标识符

  • 关键字:

  • Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符

    标识符注意点

    • 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
      • 合法标识符举例:age、$salary、_value、__1_value
      • 非法标识符举例:123abc、-salary、#abc
    • 不能使用关键字作为变量名或方法名
    • 标识符是大小写敏感
    • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low

3. 数据类型

  • Java是强类型语言

  • Java的数据类型分为两大类

    • (八大)基本类型(primitive type)

    • 引用类型(reference type)

      //八大基本类型
      
      //整数
      byte num1 = 10;
      short num2 = 20;
      int num3 = 30;//最常用
      long num4 = 40L;//Long类型要在数字后面加个L
      
      //浮点数
      float num5 = 50.1F;//float类型要在数字后面加个F
      double num6 = 3.1415926;
      
      //字符
      char name = 'A';
      //字符串,String不是关键字,是类
      //String name2 = "张三";
      
      //布尔值:是非
      boolean flag = true;
      //boolean flag = false;
      

数据类型扩展

  • 整数扩展:进制

    0b二进制:

    int i = 0b10;
    System.out.println(i);//输出为2
    

    0八进制:

    int i = 010;
    System.out.println(i);//输出为8
    

    0x十六进制:

    int i = 0x10;
    System.out.println(i);//输出为16
    
  • 浮点数扩展:

    float f = 0.1f; //0.1
    double d = 1.0/10; //0.1
    System.out.println(f==d);//输出为false
    
    float d1 = 12343233232f;
    float d2 = d1 + 1;
    System.out.println(d1==d2);//输出为true
    
  • 字符拓展:强制转换

    char c = "A";
    System.out.println((int)c);//输出为97
    
  • 转义字符

    // \t 制表符
    // \n 换行
    
  • String扩展

    String sa = new String(original:"hello world");
    String sb = new String(original:"hello world");
    System.out.println("sa==sb"); //false,因为是对象,从内存分析
    
  • 布尔值扩展

    boolean flag = true;
    if (flag == true){} //新手
    if (flag){} //老手
    //Less is More! 代码要精简易读
    

4. 类型转换

  • 运算中,不同类型的数据西安转化为同一类型,然后进行计算。

  • 强制类型转换:高-->低

    int i = 10;
    byte b = (byte)i;
    
  • 自动类型转换:低-->高

    int i = 10;
    double b = i;
    
  • 注意点:

    • 不能对布尔值进行转换

    • 不能把对象类型转换为不相干的类型

    • 在把高容量转换到低容量的时候,强制转换

    • 转换的时候可能存在内存溢出,或者精度问题

      int i = 128;
      byte b = (byte)i; //输出为-128,内存溢出
      
      System.out.println((int)23.7); //23
      System.out.println((int)-45.89f); //-45
      
      //操作比较大的数的时候,注意溢出问题
      //JDK7新特性,数字之间可以用下划线分割
      int money = 10_0000_0000;
      int years = 20;
      int total = money*years; //-1474836480,计算的时候溢出了
      long total2 = money*years; //默认是int,转换之前已经存在问题了
      long total3 = money*((long)years); //先把一个数转换为long
      

5. 变量、常量、作用域

变量

  • 变量是什么:就是可以变化的量!

  • Java是一种强类型语言,每个变量都必须声明变量。

  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。

    type varname [=value][{,varName[=value]}];
    //数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。(不推荐)
    
  • 注意事项

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。

    • 变量名必须是合法的标识符。

    • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

      //int a=1,b=2,c=3;(不推荐,程序可读性差)
      int a=1;
      int b=2;
      int c=3;
      String name = "zhang";
      char x = 'X';
      double pi = 3.14;
      

变量作用域

  • 类变量

  • 实例变量

  • 局部变量

    public class Variable{
        static int allClicks=0;     //类变量:写在方法外面,前面加static
        String str="hello world";     //实例变量:写在方法外面
        public void method(){
            int i = 0;     //局部变量:写在方法里面
        }
    }
    
    import java.sql.SQLOutput;
    
    public class 变量 {//这里类的名字最好用英文,我写错了
    
        //类变量 static
        static double salary = 2500;
    
        //属性:变量
    
        //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0
        //布尔值:默认是false
        //除了基本类型,其余的默认值都是null;
        String name;
        int age;
    
        //main方法
        public static void main(String[] args) {
    
            //局部变量;必须声明和初始化值
            int i = 10;
            System.out.println(i);
    
            //变量类型 变量名字 = new 变量类型();
            变量 变量 = new 变量();
            System.out.println(变量.age);
            System.out.println(变量.name);
    
            //类变量 static
            System.out.println(salary);
        }
    
    
        //其他方法
        public void add(){
    
        }
    
    }
    

常量

  • 常量:初始化后不能再改变值!不会变动的值。

  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

    //final 常量名=值;
    final double PI = 3.14;
    
  • 常量名一般使用大写字符。

    public class 常量 {
    
        //修饰符,不存在先后顺序
        static final double PI = 3.14;
        //final static double PI = 3.14;
    
        public static void main(String[] args) {
            System.out.println(PI);
        }
    }
    

变量的命名规则

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:润(),runRun()

6. 基本运算符

  • 算数运算符:+,-,*,/,%,++,--
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

自增自减运算符

  • ++ --是一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增

System.out.println(a); //输出4
System.out.println(b); //输出3

int c = ++a; //执行完这行代码后,先自增,再给b赋值

System.out.println(a); //输出5
System.out.println(c); //输出5

初识Math类

  • 幂运算

    double pow = Math.pow(3,2);
    System.out.println(pow); //3^2=9
    
  • 很多运算,我们会使用一些工具类来操作!

逻辑运算符

  • &&:逻辑与运算:两个变量都为真,结果才为true。

  • ||:逻辑或运算:两个变量有一个为真,则结果才为true。

  • !:逻辑非运算:如果是真,则变成假;如果是假,则变成真

  • 短路运算:

    int c = 5;
    boolean d = (c<4)&&(c++<4);
    System.out.println(d); //因为c<4已经是false了,所以就不用进行接下来的计算了
    

位运算符

/*
	A = 0011 1100
	B = 0000 1101
	-------------------
	A&B = 0000 1100
	A|B = 0011 1101
	A^B = 0011 0001
	~B = 1111 0010
*/
/*
2*8 = 16 计算机怎么做算得快
	=2*(2*2*2)
	效率极高!!
    <<   *2
    >>   /2
    
    0000 0000 0
    0000 0001 1
    0000 0010 2
    0000 0100 4
    0000 1000 8
    0001 0000 16
*/
System.out.println(2<<3);
    

扩展赋值运算符

  • a+=b --> a = a+b

    a-=b --> a = a - b

  • 字符串连接符 +

    int a = 10;
    int b = 20;
    System.out.println(""+a+b); //输出为1020
    System.out.println(a+b+""); //输出位30
    

条件运算符

  • 三元运算符

  • x ? y : z

    如果x==true,则结果为y,否则结果为z

    int score = 80;
    String type = score<60 ? "不及格" : "及格";
    System.out.println(type);
    

7. 包机制

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。(相当于文件夹)

  • 包语句的语法格式为

    package pkg1[.pkg2[.pkg3...]];
    
  • 一般利用公司域名倒置作为包名;

    com.baidu.www

    com.baidu.wenku

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能。

    import package1[.package2...].(classname|*);
    
posted on 2021-02-27 13:06  醉落逍遥  阅读(38)  评论(0编辑  收藏  举报