• JavaSE-基础语法


    注释

    单行注释: //注释
    多行注释: /*注释*/
    文档注释: /** 文档注释 */
    

    image-20210527003133318

    标识符与关键字

    下图为Java中所有的关键字

    所有标识符必须以大小写字母或$或_开头,首字母之后可以用数字

    不能使用关键字做变量名或方法名

    标识符大小写敏感

    image-20210527212712443

    数据类型

    Java是一种强类型语言:要求变量使用要严格符合规定,所有变量必须先定以后才能使用。

    Java数据类型分为2大类

    基本类型(primitive type):

    1、整数类型: byte占1个字节

    ​ short占2个字节

    ​ int 占4个字节 (默认)

    ​ long占8个字节

    2、浮点类型:float占4个字节

    ​ double占2个字节(默认)

    3、字符类型:char占2个字节

    4、boolean类型:占1位,true和false

    引用类型(reference type)

    1、类 class

    2、接口 interface

    3、数组 array

    public class Demo01 {
        public static void main(String[] args) {
            //八大基本数据类型   定义的变量不赋值则无法使用
            byte num1 =10;
            short num2 = 20;
            int num3 = 30;
            long num4 = 40L; //长整型需要在value后面加L
    
            // 浮点数 float double
            float num5 = 10.1F; //float 类型需要在value后加F
            double num6 = 3.1415926;
    
            //字符类型
            char name1 = 'A';
            //字符串String不是数据类型也不是关键词而是类,必须用"包裹
            String name2 = "Hellow World!";
    
            boolean flag = true;
    
            System.out.println(num1);
            System.out.println(num2);
            System.out.println(num3);
            System.out.println(num4);
            System.out.println(num5);
            System.out.println(num6);
            System.out.println(name1);
            System.out.println(name2);
            System.out.println(flag);
    
        }
    }
    

    类型转换

    Java是抢类型语言,在进行运算时,不同类型的数据需要先转换为同一类型在进行运算。

    image-20210528232207787

    容量从低到高优先级排序,因为浮点型优先级比整型高,所以float虽然容量小于long,但依然优先级高于long。

    从 高 --> 低 需要强制类型转换

    从 低 --> 高 自动类型转换

    强制类型转换:

    类型 变量名 = (目标类型名) 需要强制转换的变量名

    public class Demo05 {
        public static void main(String[] args) {
         		 // 高 --> 低 :强制类型转换
            int i = 128;
            byte b = (byte)i;   //这里输出结果不为128,因为byte最大值为127,此处内存溢出了,类型转换时需注意相应类型的最大容量,避免内存溢出。
    
            System.out.println(i);
            System.out.println(b);
    
        }
    }
    
    //输出结果:
    128
    -128
    

    自动类型转换:

    public class Demo05 {
        public static void main(String[] args) {
            // 低 --> 高 :自动类型转换
            int j = 128;
            double c = j;
    
            System.out.println(j);
            System.out.println(c);
        }
    }
    
    //输出结果:
    128
    128.0
    

    Ps:

    • 不能对布尔值进行类型转换
    • 不能把对象类型转换为不相干的类型
    • 高容量 --> 低容量 强制类型转换
    • 转换时可能存在内存溢出或精度问题
    public class Demo03 {
        public static void main(String[] args) {
            char c1 = 'a';
            char c2 = '中';
    
            System.out.println(c1);
            System.out.println((int)c1);		//强制类型转换
            System.out.println(c2);
            System.out.println((int)c2);
        }
    }
    

    可以看到进行强制类型转换后输出的为字符对应的ascii值

    a
    97
    中
    20013
    

    变量

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

    变量是Java最基本的存储单元,其要素包含变量名、数据类型、作用域

    ps:

    • 每个变量都有类型,类型可以是基本类型(整型、浮点型、字符型、布尔型)也可以是引用类型(类、接口、数组)
    • 变量名必须是合法标识符,也就是必须以大小写字母或$或_开头
    • 声明变量语句注意要以 分号 结束
    type varName = [=value] [{,varName[=value]}];
    数据类型 变量名 = 值;  //可以使用逗号分隔来同时声明多个变量
    

    变量的作用域

    • 类变量
    • 实例变量
    • 局部变量
    public class Demo06 {
    
        //类变量,声明格式类似于实例变量,不过需要加static, 随类的出现和消失而出现和消失。
        static double salary = 2500;
    
        //实例变量,在类的里面方法的外面,从属于对象;如不自行初始化,Java会将其值初始化为这个类型的默认值。 0,0.0, 布尔:false, 其余数据类型:null
        String name;
        int age;
    
        //main方法
        public static void main(String[] args) {
    
            //局部变量,在此方法里面,使用时必须声明和初始化值,不可在其他方法调用。
            int i = 10;
            System.out.println(i);
    
            //变量类型(Demo06) 变量名(demo06) = 值(new Demo06())
            Demo06 demo06 = new Demo06();
    
            System.out.println(demo06.age);
            System.out.println(demo06.name);
            System.out.println(salary);
        }
    
        //其他方法
        public void add(){
    
        }
    }
    

    常量

    • 常量初始化后,常量值不可改变,可理解为特殊的变量
    • 常量名一般使用大写字符
    final 常量名 = 常量值;final i = 10;
    
    public class Demo07 {    //修饰符(static、final等)无先后顺序    static final int I = 10;    public static void main(String[] args) {        System.out.println(I);    }}
    

    变量命名规范

    image-20210529004516463

    修饰符

    static 将方法变为类的方法,被修饰的方法可以在类里直接引用而不需要先创建对象。

    public 公有的,如果想让子类也可以使用此属性或方法,需要用public修饰

    protected 受保护的,同包不同级,不可以跨包使用

    default 默认为default

    private 私有的,私有的属性和方法是可以被继承的,但是仅限被类访问,子类一般无法直接调用及访问。一般属性也是私有的

    final 通过final修饰得类没有子类

    运算符

    image-20210531204853051

    % 模 取余运算instanceof==实例注意a++与++a的区别,a++先赋值再+1,++a先+1再赋值
    
    package operator;public class Demo2 {    public static void main(String[] args) {        long a = 123123123123123123L;        int b = 123;        short c = 10;        byte d = 8;        // 返回结果为操作数中最高位        System.out.println(a+b+c+d);        System.out.println(b+c+d);        System.out.println(c+d);    }}12312312312312326414118
    

    当操作数中有long,则返回值类型为long;操作数中无long时,返回结果为操作数中最高位

    自增自减运算符、Math类

    Java.lang下的包不需要导入

    package operator;public class Demo3 {    public static void main(String[] args) {        int a = 3;        //先赋值再+1        int b = a++;        //先+1再赋值        int c = ++a;        System.out.println(a);        System.out.println(b);        System.out.println(c);        //java.lang下的包不需要导入;         double pow = new Math.pow(2,3);        System.out.println(pow);    }}
    

    Java包机制

    包可以理解为一个文件夹

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

    语法:

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

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

    例如:com.baidu.www

    为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。

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

    import语句必须在package语句下面,不然会报错

    IDEA默认开启了Compact Middle Packages,需要取消勾选才可一次性生成多级package

    image-20210531231138976

    所有内容仅限于维护网络安全学习参考
  • 相关阅读:
    开发导致的内存泄露问题,运维小伙伴儿这样排查不背锅
    JVM垃圾回收器、内存分配与回收策略
    笔试编程(二) | 7种常见的排序算法解析(附实现代码)
    HBase高级特性、rowkey设计以及热点问题处理
    Geotools创建Feature的两种方式
    geotools实现追加数据到数据库
    Java连接mysql数据库经典代码
    leaflet加载高德地图和Geoserver的WMS服务
    geotools学习之连接数据库并获取数据
    LeaFlet中切片图层使用自定义坐标系
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/14881598.html
Copyright © 2020-2023  润新知