Java基础语法

Java基础语法

注释

    平时我们编写代码,在代码量比较少的时候,我们还可以看懂,但是当项目结构一旦复杂起来,我们就需要注释。
    注释并不会被执行,注释只是为了方便阅读。
    书写注释是一个非常好的习惯

  • Java中的注释有三种
//这是单行注释

/*
        这是多行注释
 */

/**
*   这是文档注释
*/

标识符

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

  • 关键字:ava关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
    Java关键字.png

  • 标识符注意点:
        所有的标识符都应该以字母(A-Z或a-z)、美元符($)或者下划线(_)开始。
        首字符之后可以是字母(A-Z或a-z)、美元符($)、下划线(_)或数字的任何字符组合。
        不能使用关键字作为变量名或者方法名。
        标识符是大小写敏感的
        可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low。

数据类型

  • 强类型语言:是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。(Java,C语言)
  • 弱类型语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。(VB,JS)
  • Java的数据类型分为两大类
        基本类型(primitive type)
        引用类型(reference type)
    Java的数据类型.jpg
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 30L;
float num5 = 50.1F;
double num6 = 3.14;
char name = 'A';
boolean flag = true;

//String不是关键字,是类
String name = "HaHaHa";

字节

  • 位(bit):是计算机内部数据存储的最小单位,1100 1100是一个八位二进制数。
  • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
        1B = 8bit
        1024B = 1KB
        2014KB = 1M
        1024M = 1G
        1024G = 1T
  • 字符:是指计算机中使用的字母、数字、字和符号
  • 进制:也就是进位计数制,是人为定义的带进位的计数方法
        二进制:0b
        八进制:0
        十进制:什么也不加
        十六进制:0X

银行业务问题

    我们常用的float数据类型是否可以用来表示银行的问题呢?
    下面先看一个示例。

float f = 0.1f;     //0.1
double d = 1.0/10;  //0.1
System.out.println(f==d);   //输出false
System.out.println(f);      //输出0.1
System.out.println(d);      //输出0.1

float d1 = 23131312312312313f;
float d2 = d1 + 1;
System.out.println(d1==d2); //输出true

    为什么会出现上面这种情况?
    这是因为浮点型数据存储方式会导致数据精度损失,增大计算误差,所以我们在编程的过程中,要尽量避免使用浮点数进行比较。
    同样double也会出现精度问题,那么我们应该用什么来表示货币问题呢,我们可以用java.math包中提供的API类BigDecimal,该类提供更加精确的运算和比较等。

转义字符

    转义字符是很多程序语言、数据格式和通信协议的形式文法的一部分。对于一个给定的字母表,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义。
转义字符.png

字符串比较

String sa = new String("hello world");
String sb = new String("hello world");

System.out.println(sa==sb);           //比较地址,结果为false

String sc = "hello world";            //地址上的字符串赋给sc
String sd = "hello world";            //地址上的字符串付给sd

System.out.println(sc==sd);           //比较字符串,结果为true

类型转换

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

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

    在运算中,不同类型的数据先转化为同一类型,然后进行运算。
    类型转换分为强制类型转换和自动类型转换

int i = 128;
byte b = (byte)i;       //强制类型转换,内存溢出
System.out.println(i);
System.out.println(b);

int x = 15;
double y = x;           //自动类型转换
System.out.println(x);
System.out.println(y);

//强制类型转换    (类型)变量名     高--->低
//自动类型准换                   低--->高
/*
        注意点:
        1、不能对布尔值进行转换
        2、不能把对象类型转换为不相干的类型
        3、再把高容量转换到低容量的时候,强制转换
        4、转换的时候可能存在内存溢出或者精度问题
 */

变量

  • 变量:可以变化的量
  • Java是一种强类型的语言,每个变量都必须声明其类型
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
//type varName [=value][{, varName[=value]}];
  • 注意事项
        每个变量都有数据类型,类型可以是基本类型,也可以是引用类型
        变量名必须是合法的标识符
        变量声明是一条完整的语句,因此每一个声明都必须以分号结束

变量作用域

  • 类变量:是类中独立于方法之外的变量,用static 修饰。
  • 实例变量:指在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
  • 局部变量:也称内部变量,是指在一个函数内部或复合语句内部定义的变量。
public class Demo01 {

    // 类变量 static
    static double salary = 2500;

    // 实例变量:如果不自行初始化,这个类型的变量的默认值0、0.0、false或者null
    String name;
    int age;
    public static void main(String[] args){

        // 局部变量:必须声明和初始化值
        int i = 10;
        System.out.println(i);

        Demo01 demo01 = new Demo01();
        System.out.println(demo01.age);
        System.out.println(demo01.name);

        System.out.println(salary);
    }
}

常量

  • 常量(Constant):初始化(initialize)后不能在改变值!不会变动的值。
  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
//final 常量名 = 常量值;
//final double PI = 3.14;
  • 常量名一般使用大写字符。
//修饰符不存在先后顺序
static final double PI = 3.14; 
    
    public static void main(String[] args) {
        System.out.println(PI);
    }

变量的命名规范

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

运算符

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

System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);    //0.5舍去小数点后面的数System.out.println(a/(double)b);
long c = 123123123123123L;
int d = 123;
short e = 10;
byte f = 8;

System.out.println(c+d+e+f);    //long
System.out.println(d+e+f);      //int
System.out.println((e+f));      //int

//关系运算符返回的结果: 正确,错误     布尔值
int g = 10;
int h = 20;
int i = 21;

//取余,模运算
System.out.println(i%g);    //1
System.out.println(g>h);    //false
System.out.println(g<h);    //true
System.out.println(g==h);   //false
System.out.println(g!=h);   //true
        
//++    --  自增  自减
int j = 3;
int k = j++;    //k = j; j = j + 1;
int l = ++j;    //j = j + 1; l = j;

System.out.println(j);
System.out.println(k);
System.out.println(l);

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

//与(and)    或(or)   非(取反)
boolean m = true;
boolean n = false;

System.out.println("m && n =" + (m && n));//逻辑与运算:两个变量都为真,结果为true
System.out.println("m || n =" + (m || n));//逻辑或运算:两个变量有一个为真,则结果为true
System.out.println("!(m && n) =" + !(m && n));//如果为真,则变为假,如果为假,则变成真

// 短路运算
int o = 5;
boolean p = (o < 4) && (o++ < 4);
System.out.println(p);//p为false
System.out.println(o);//o为5,没有执行o++

//位运算
/*
    A = 0011 1100;
    B = 0000 1101;
    A & B = 0000 1100;  A与B
    A | B = 0011 1101;  A或B
    A ^ B = 0011 0001;  A异或B
    ~B = 1111 0010;     取反

    <<左移    >>右移
*/
    System.out.println(2<<3);   //输出16

int q = 10;
int r = 20;
q += r;     //q = q + r;
q -= r;     //q = q - r;
System.out.println(q);

//字符串连接符  +
System.out.println(q + r);  //输出结果
System.out.println("" + q + r);//输出q和r的连接
System.out.println(q + r + "");//输出q和r的结果

//三元运算赋     x ? y : z(如果x为true,则结果为y,否则结果为z)
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);

包机制

  • 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
  • 包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
  • 一般利用公司域名倒置作为包名
  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。
import package1[.package2...].(classname|*);
//导入这个包的所有的类
import com.wang.base.*;

JavaDoc

  • JavaDoc命令是用来生成自己API文档的
  • 参数信息
/**
 * @author 作者名
 * @version 版本号
 * @since 指明需要最早使用的jdk版本
 * @param 参数名
 * @return 返回值情况
 * @throws 异常抛出情况
*/
  • 生成JavaDoc文档
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
posted @ 2021-01-21 13:32  AllenParker  阅读(87)  评论(0)    收藏  举报