Java基础语法

Java基础语法

1.注释、标识符、关键字

注释

  • 单行注释://
  • 多行注释:/* 注释 */
  • JavaDoc(文档注释): /** */

标识符

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

标识符大小写敏感

2.数据类型

  • 强类型语言

    要求严格规定,所有变量都必须先定义后才能使用

  • 弱类型语言

    JS使用

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

    ​ 基本类型

    image-20240720204835320
    public class demo02 {
        public static void main(String[] args) {
            //八大基本数据类型
            //整数
            int num1=10; //最常用
            byte num2=20;
            short num3=30;
            long num4=30L;//Long类型要在数字后面加个L
    
            //小数:浮点数
            float num5=50.1F;//float类型要在数字后面加个F
            double num6=3.14159265358;
    
            //字符
            char name = 'A';
            //字符串 String不是关键字,类
            String namea ="zyj";
            //布尔值
            boolean flag = true;
            //boolean flag = Flase;
    
    
        }
    }
    

    ​ 引用类型

    面试题讲解

    public class demo03 {
        public static void main(String[] args) {
            //整数拓展:  进制     二进制0b   十进制    八进制0    十六进制0x
            int i=10;
            int i2=010; //八进制0
            int i3=0x10;  //十六进制0x   0~9 A~F 16
    
            System.out.println(i);
            System.out.println(i2);
            System.out.println(i3);
            System.out.println("================================");
            //==========================================================
            //浮点数拓展? 银行业务怎么表示?钱
            //BigDecimal 工具
            //==========================================================
            //float  有限 离散  舍入误差  大约   接近但不等于
            //double
            //最好完全使用浮点数进行比较
            //最好完全使用浮点数进行比较
            //最好完全使用浮点数进行比较
            float f = 0.1f;  //0.1
            double d = 1.0/10;//0.1
            System.out.println(f==d);//false
            float d1 = 232323232323f;
            float d2 = d1+1;
            System.out.println(d1==d2);//true
    
    
            //==========================================================
            //字符拓展?
            //
            //==========================================================
            char c1='a';
            char c2='中';
            System.out.println(c1);
            System.out.println((int)c1); //强制转换
            System.out.println(c2);
            System.out.println((int)c2); //强制转换
            //所有的字符本质还是数字
            //编码 Unicode 表:(97=a  65=A)  2字节  0-65536  Excel  2 16 =65536
            //U0000 UFFFF
            char c3 = '\u0061';
            System.out.println(c3);//a
            //转义字符
            //\t 制表符
            //\n 换行
            System.out.println("Hello\tWorld");
    
            String sa = new String("hello world");
            String sb = new String("hello world");
            System.out.println(sa==sb);
    
            String sc = "hello world";
            String sd = "hello world";
            System.out.println(sc==sd);
            //对象   从内存分析
    
            //布尔值扩展
            boolean flag = true;
    
            if(flag==true){}//新手
            if(flag){}//老手
            //Less is More!  代码要精简易读
    
    
        }
    }
    
    

3.类型转换

由于Java是强类型语言,所以在进行有些运算时,用到类型转换

运算中,不同类型的数据先转化为同一类型,然后进行运算

低------------------------------------------------------------>高

byte,short,char->int->long->float->double

强制类型转换 高--低

自动转换 低--高

public class demo04 {
    public static void main(String[] args) {
        int i =128;
        byte b = (byte)i;//内存溢出
        double d =i;
        //强制转换   (类型)变量名   高--低
        //自动转换    低--高
        System.out.println(i);
        System.out.println(b);
        System.out.println(d);
        /*
        注意点:
        1.不能把布尔值进行转换
        2,不能把对象类型转换为不相干的而类型
        3.在把高容量转换到低容量的时候,强制转换
        4.转换的时候可能存在内存溢出,或者精度问题!
         */
        System.out.println("===============");
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89f);//-45
        System.out.println("===============");
        char c = 'a';
        int e = c+1;
        System.out.println(e);
        System.out.println((char)e);

    }
}

面试题讲解:

public class demo05 {
    public static void main(String[] args) {
        //操作比较大的数时,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years =20;
        int total = money *years;//-1474836480,计算的时候溢出了
        long total2 = money *years;//默认是int,转换之前就已经存在问题了

        long total23 = money *((long)years);//20000000000 先把一个数转换为Long
        System.out.println(total23);
    }
}

4.变量、常量

变量:就是可以变化的量!

java是一种强类型语言,每个变量都必须声明其类型

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

type varName [=value][{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明 多个同类型变量。

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
  • 变量名必须是合法的标识符
  • 变量声明是一条完整的语句,因此每一个生命都必须以分号结束

变量作用域:

  • 类变量
  • 实例变量
  • 局部变量
public class demo07 {
    //类变量 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 demo07();
        demo07 demo07= new demo07();
        System.out.println(demo07.name);
        System.out.println(demo07.age);

        //类变量 static
        System.out.println(salary);

    }

    //其他方法
    public void add(){

    }
}

常量

public class Demo08 {
    //修饰符,不存在先后顺序
    static final double PI =3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

5.运算符

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //ctrl+D:复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
    }
}
public class Demo02 {
    public static void main(String[] args) {
        long a =123123123123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
    }
}
public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回结果:  正确  错误  布尔值
        int a =10;
        int b= 20;
        int c =21;
       //取余,模运算
        System.out.println(c%a);//c/a    21/10=2...1

        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
}
public class Demo04 {
    public static void main(String[] args) {
        //++ -- 自增,自减 一元运算
        int a=3;
        int b= a++;  //执行完这行代码后,先给b赋值,再自增
        // a = a + 1
        System.out.println(a);
        //a++    a = a + 1
        int c= ++a;  //执行完这行代码前,再自增,先给b赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //幂运算 2^3  2*2*2=8   很多运算,会使用工具类来操作!
        double pow = Math.pow(3,2);
        System.out.println(pow);

    }
}

public class Demo05 {
    public static void main(String[] args) {
        //与(and) 或(or)  非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果才为true
        System.out.println("!(a && b):"+!(a&&b));//如果是真,则变为假,如果是假则变为真

        //短路运算
        int c =5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);


    }
}
public class Demo06 {
    public static void main(String[] args) {
        /*
        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
        <<左移
        >>右移

         */
        System.out.println(2<<3);
    }
}
public class Demo07 {
    public static void main(String[] args) {
        int a =10;
        int b = 20;

        a+=b;  //a=a+b;
        System.out.println(a);
        a-=b;  //a=a-b;
        System.out.println(a);

        //字符串连接  +,String  (有区别!!!)
        System.out.println(a+b);
        System.out.println(""+a+b);
        System.out.println(a+b+"");

    }
}

public class Demo08 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z

        int score = 80;
        String type = score < 60 ?"不及格":"及格";//必须掌握!!
        //if
        System.out.println(type);
    }
}

6.包机制

为了更好的组织类,Java提供了包机制,用于区别类名的命名空间

包语句的语法格式

package pkg1[. pkg2[.pkg3...]];

一般利用公司域名倒置作为包名;

导入包的语法

import package[.package2...].(classname|*);

《阿里巴巴开发手册》

JavaDoc

是用来生成自己的API文档的

用cmd命令

javadoc -encoding UTF-8 -charset UTF-8 Doc.java
posted @ 2024-07-23 21:07  激萌小李逵  阅读(1)  评论(0编辑  收藏  举报