首页 > 编程语言 >04.Java基础语法

04.Java基础语法

时间:2023-01-14 23:55:20浏览次数:38  
标签:Java String 04 int System 语法 println public out

一元运算符

Java基础语法

一、注释、标识符、关键字

注释

Java中的注释有三种:

​ 单行注释

​ 多行注释

​ 文档注释

public class Hello_World {
    // 两个斜杠就是一个单行注释
    // 多行注释会在/*  */之间写文字
    /* 这
       是
       一
       个
       多行注释
     */
    // JavaDoc:文档注释,是以/**开头以*/结尾并且每一行开头都有一个*
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

标识符

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

前文代码中Hello_World是类名,main是方法名

注意:

  • 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(-)开始
  • 首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(-)或者数字的任何字符组合
  • 不能使用关键字作为变量名或者方法名
  • 标识符是大小写敏感
  • 一般建议使用英文去命名

二、数据类型

Java是强类型语言,要求变量的使用要严格符合规定,所变量都必须先定义后才能使用

Java的数据类型分为两大类

基本类型:

  • 数值类型

    整数类型:

    ​ byte占一个字节范围

    ​ short占两个字节范围

    ​ int占四个字节范围

    ​ long占八个字节范围

    浮点类型:

    ​ float占四个字节

    ​ double占八个字节

    字符类型:

    ​ char占两个字节

  • boolean类型

    占一位,其值只有ture和false两个

    public class Demo01 {
        public static void main(String[] args) {
            // 八大基本数据类型
    
            //整数
            int num1 = 10;//最常用
            byte num2 = 100;//byte最大不能超过127
            short num3 = 30;
            long num4 = 40L;//long类型要在数字后面加一个L
    
            //浮点数
            float num5 = 50.2F;
            double num6 = 3.14159263215889456134564;
    
            //字符
            char name = 'a';
    
            //字符串
            String name1 = "魏博伦";//String不是关键字而是一个类
    
            //布尔值
            boolean flag = true;
            boolean flag1 = false;
    
        }
    }
    
    
    public class Demo02 {
        public static void main(String[] args) {
            //整数拓展   进制   二进制0b   十进制   八进制0  十六进制0x
            int i = 10;
            int i1 = 0b10;//二进制0b开头
            int i2 = 010;//八进制0开头
            int i3 = 0x10;//十六进制0x开头
    
            System.out.println(i);
            System.out.println(i1);
            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);//判断d和f是否相等
            System.out.println(f);
            System.out.println(d);
    
            float f1 = 1212313212121f;
            float f2 = f1 + 1;
            System.out.println(f1==f2);
            System.out.println("================================");
            //==============================================================
            //字符拓展
    
            char c1 = 'a';
            char c2 = '中';
    
            System.out.println(c1);
            System.out.println((int) c1);//强制类型转换
    
            System.out.println(c2);
            System.out.println((int) c2);
            //所有的字符本质还是数字
            //Unicode表,Unicode编码占了两个字节,0-65536个(现在更多)
            //从U0000到UFFFF
            char c = '\u0069';
            System.out.println(c);
    
            //常见的转义字符
            //  \t 制表符
            //  \n 换行符
            System.out.println("Hello\tWorld!");
            System.out.println("Hello\nWorld!");
            System.out.println("================================");
            //==============================================================
            //骚操作
            String s1 = new String("Hello World!");
            String s2 = new String("Hello World!");
            System.out.println(s1 == s2);
    
            String s3 = "Hello World!";
            String s4 = "Hello World!";
            System.out.println(s3 == s4);
            //从内存分析
            System.out.println("================================");
            //==============================================================
            //布尔值拓展
            Boolean flag = true;
            if(flag){
                System.out.println("flag = true");
            }
    
        }
    }
    
    

引用类型:

  • 接口
  • 数组

三、类型转换

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

image-20230114154234714

public class Demo03 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;
        //加了括号的转换是强制类型转换(类型)变量名
        //强制转换(高-->低)自动转换(低-->高)

        System.out.println(i);
        System.out.println(b);//byte的最大值是127,128会内存溢出

        int a = 128;
        double d = i;

        System.out.println(a);
        System.out.println(d);//自动转换不需要加括号

        /*
        注意点:
            1.不能对布尔值进行转换
            2.不能吧对象类型转换成不合逻辑的类型
            3.把高容量转换到低容量的时候,强制转换,反之不需要其他操作
            4.转换的时候可能会存在内存溢出,或者精度问题!
         */

        System.out.println("=========================");
        System.out.println((int)23.7);
        System.out.println((int)-45.89f);

        System.out.println("=========================");
        char c = 'a';
        int i1 = c+1;
        System.out.println(i1);
        System.out.println((char)i1);

        System.out.println("=========================");
        int q = 12346;
        char f = (char)q;
        System.out.println(f);

        System.out.println("=========================");
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割,并且下划线不会打印
        int money = 10_0000_0000;
        int year = 20;
        int total = money * year;
        System.out.println(money);
        System.out.println(total);//-1474836480,计算时溢出了,int最多到20亿

        long total1 = money * year;
        System.out.println(total1);
        //由于money和year都是int类型,默认相乘之后是int类型,也就是说转换之前就已经存在问题

        long total2 = money * ((long)year);//先把一个数转换成long类型
        System.out.println(total2);

    }
}

四、变量、常量

变量

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

  • 类变量
  • 实例变量
  • 局部变量

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  • 每个变量必须是合法的标识符
  • 变量声明是一条完整的语句,因此每个声明都必须以分号结束
public class Demo04 {
    static int salary = 2500;//类变量
    String str = "Hello World!";//实例变量:从属于对象,如果不自行初始化,该变量值为这个类型的默认值
    String str1;
    boolean flag;
    public void add(){
        int t = 0;//局部变量

    }

    public static void main(String[] args) {
//        int a,b,c;由于程序可读性尽量不在一行声明多个变量
        int a = 1;//局部变量
        int b = 1;
        int c = 1;

        //若要使用str
        Demo04 demo04 = new Demo04();
        System.out.println(demo04.str);
        System.out.println(demo04.str1);//实例变量,如果不自行初始化,该变量值为这个类型的默认值
        System.out.println(demo04.flag);//bool值默认是false,基本类型是0,其他类型是null

        System.out.println(salary);//类变量多一个static,可以直接用

    }
}

常量

初始化之后就不会改变的值,所谓常量可以理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。常量名一般用大写字母。

final 常量名 = 值

final double PI = 3.14;
public class Damo05 {
    //static和final等是修饰符,不存在先后顺序
    static final double PI = 3.14;
    final  static double PII = 3.15;
    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(PII);

    }
}

命名原则

  • 类成员变量:首字母小写和驼峰原则:monthSalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则

五、运算符

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

二元运算符

package operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        //Ctrl+D:复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/((double)b));
    }
}

package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 121231234545451L;
        int b = 123;
        short c = 100;
        byte d = 8;

        System.out.println(a+b+c+d);//long
        System.out.println(b+c+d);//int
        System.out.println(c+d);//int
        //变量中有long则结果是long类型,有double结果是double类型,其余的结果都是int
    }
}

package operator;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回结果只有:正确、错误(用bool值来表示)
        int a = 10;
        int b = 20;
        int c = 32;

        System.out.println(c%a);
        System.out.println(a<b);
        System.out.println(a>b);
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a<=b);
        System.out.println(a>=b);
    }
}

一元运算符

package operator;

public class Demo04 {
    public static void main(String[] args) {
        //++ -- 自增,自减   一元运算符
        int a = 3;
        int b = a++;//先把a赋值给b再自增

        System.out.println(a);

        int c = ++a;//先自增再把a复制给c

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //计算Java中没有的数学运算比如幂运算,在Java中没有^运算符
        double pow = Math.pow(2,13);
        System.out.println(pow);

    }
}

逻辑运算符

package operator;

public class Demo05 {
    public static void main(String[] args) {
        //逻辑运算符:与  或  非
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a && b));
        System.out.println("a || b:"+(a || b));
        System.out.println("!(a && b):"+(!(a && b)));

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);
        //当执行到c<4的时候就知道是false,此时就不进行后面的判断了,由于与运算二者不同就是false
        //可以发现结果中c依然是5并没有自增
    }
}

位运算符

package operator;

public class Demo06 {
    public static void main(String[] args) {
       /*
       A = 0011 1100
       B = 0000 1101
--------------------------------------------------------
       A&B 0000 1100(对应位置上只有都是1才为1,其余都是0)
       A|B 0011 1101(对应位置上只有都是0才是0,其余只要有一个1就为1)
       A^B 0011 0001(对应位置上相同为0,不同为1)
       ~B  1111 0010(对应位置上直接取反)
        */

    }
}

经典面试题:2*8怎么运算最快

package operator;

public class Demo06 {
    public static void main(String[] args) {
       /*
       A = 0011 1100
       B = 0000 1101
--------------------------------------------------------
       A&B 0000 1100(对应位置上只有都是1才为1,其余都是0)
       A|B 0011 1101(对应位置上只有都是0才是0,其余只要有一个1就为1)
       A^B 0011 0001(对应位置上相同为0,不同为1)
       ~B  1111 0010(对应位置上直接取反)
        */

        /*
        2*8怎么算最快
        <<  左移相当于*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);


    }
}

拓展赋值运算符

package operator;

public class Demo07 {
    public static void main(String[] args) {
        int a  = 70;
        int b  = 20;

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

        //字符串连接符   +
        System.out.println(a+b);
        //在+两侧只要是有一方出现string类型,则会把其他都转换成string类型,再进行连接
        System.out.println(""+a+b);
        System.out.println(a+b+"");
        //前者先计算到空字符+a所以a和b都是字符串形式拼接
        //后者先计算a+b再和字符串进行拼接


    }
}

三元运算符

必须掌握

package operator;

public class Demo08 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z
        int score = 80;
        String type = score<60 ? "不及格" : "及格";
        System.out.println(type);

        int score1 = 50;
        String type1 = score1<60 ? "不及格" : "及格";
        System.out.println(type1);
    }
}

六、包机制、JavaDoc

包机制

为了更好地组织类,Java提供了包机制,用于区别类名的命名空间,包的本质就是文件夹。

包语句的语法格式为:

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

一般利用公司域名倒置作为包名:com.baidu.www

image-20230114230428990

为了能够使用某一个包的成员,我们只需要再Java程序中明确导入该包。使用"import"语句即可完成

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

package com.allen.operator;

import javax.xml.crypto.Data;//导包要在package com.allen.operator;下面
import com.allen.base.Demo02;//导入自己写的包base的Demo02类
import com.allen.base.*;//导入包中的所有内容

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

JavaDoc

JavaDoc命令是用来生成自己API文档的,是一种技术,将自己的注释信息生成一个帮助文档

参数信息:

  • @author :作者名
  • @version:版本号
  • @since:知名需要最早使用的jdk版本
  • @param:参数名
  • @return:返回值情况
  • @throws:异常抛出情况
package com.allen.operator;
//加在类上的注释
/**
 * @author AllenWei
 * @version 1.0
 * @since 1.8
 */
public class Doc {
    String name;
    //加在方法上的注释

    /**
     * @author AllenWei
     * @param name
     * @return
     * @throws Exception
     */
    public  String test(String name)throws Exception{
        return name;

    }
}

image-20230114233305889

image-20230114233344919

image-20230114233552302

使用IDEA生成JavaDoc文档

image-20230114233930594

image-20230114234200470

image-20230114234342704

标签:Java,String,04,int,System,语法,println,public,out
From: https://www.cnblogs.com/bolunwei/p/17052857.html

相关文章

  • Java反射机制
    概念反射是Java的特征之一,是一种间接操作目标对象的机制在JVM运行的时候会动态加载类,对于任意一个类都能获取到该类的所有属性和方法,对于任意一个对象,都能够调用它的任意......
  • java中的基本类型
    引入我们前面使用过了输出语句System.out.println();知道了它能够输出()里的东西但是它到底能够输出一些什么东西呢,或者直奔主题它能够输出什么类型呢可以尝试一下,如果我......
  • Java JDK1.8的安装详细教程
    转载:https://www.jb51.net/article/243119.htmjdk1.8又称jdk8.0,是目前相对比较稳定的版本,不建议下载最新的jdk版本,因为最新版的jdk不稳定,在Java的学习中可能会出现各种各......
  • spark任务报错java.io.IOException: Failed to send RPC xxxxxx to xxxx:xxx, but got
    ##日志信息如下```Attemptedtogetexecutorlossreasonforexecutorid17atRPCaddress192.168.48.172:59070,butgotnoresponse.Markingasslavelost.......
  • Ubuntu 17.04代号“Zesty Zapus”将于2017年4月推出
    就在几分钟前,Canonical和Ubuntu创始人MarkShuttleworth非常高兴地宣布了流行的Ubuntu Linux操作系统下一个主要版本的代号。这个版本是Ubuntu17.04,其代号将是“Zesty......
  • 【JavaScript】使用WdatePicker.js插件限选一个时间范围(例如一个月)
    需求:公司处理的业务数据比较大,单张表就是几十上百万的。如果不加入指定的条件,指定的时间,限定条数的查。经过多张表的关联查询sql执行速度将会变得特别慢。之前限定时间都是......
  • Java集合之LinkedList源码分析
    LinkedList文章目录​​LinkedList​​​​LinkedList介绍​​​​LinkedList的方法总结​​​​LinkedList源码分析​​​​GetElement​​​​RemoveElement​​​​......
  • JavaDoc
      网址:https://docs.oracle.com/en/java/javase/17/docs/api/   在base文件夹打开,cmd然后输入下面这一行 然后base文件夹会出现很多东西,点击进去会出现bas......
  • Java基础之 Integer 类源码分析
    Integer类源码说明Java中Integer是基本数据类型int的包装类。也就是每一个Integer对象包含一个int类型的属性,是抽象类Number类的子类,位于java.lang包下。部分源码:publicfi......
  • java CountDownLatch用法 主线程等待子线程执行完后再执行
    这里记录一下下面这种情况:主线程需要等待多个子线程执行完后再执行。我们先看一下下面的场景:packagecom.java4all.mypoint;importjava.util.concurrent.CountDownLatch;/*......