【Java学习(一)】基础语法

*爱你&永不变心* 提交于 2020-02-20 01:58:53

一、注释

单行注释

//注释内容

多行注释

/*

注释内容

*/

文本注释

/**

注释内容

*/

二、标识符

关键词

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extents final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
  1. 所有标识符都应该以字母(A-Z或a-z),美元符($)或下划线(_)开始;

  2. 首字符之后可以是字母,美元符,下划线或数字的任何组合;

  3. 不能用关键字作为变量名或方法名;

  4. 标识符是大小写敏感的;

三、数据类型

基本类型

  1. 数值类型

a. 整数类型:byte(占1个字节范围:-128 ~ 127); short(占2个字节范围:-32768 ~ 32767); int(占4个字节范围:-2147483648 ~ 2147483647); long(占8个字节范围:-9223372036854775808 ~ 9223372036854775807)

b. 浮点类型:float(占4个字节范围);double(占8个字节范围)

c. 字符类型:char(占2个字节范围)

  1. boolean类型:占1位,其值只有true和false

引用类型

类、接口、数组

数据类型扩展

整数拓展

二进制0b;

八进制0;

十进制;

十六进制0x

int i=10;
int i2=010;   //八进制
int i3=0x10;  //十六进制
System.out.println(i);
System.out.println(i2);

浮点数扩展

float a=0.1f;
double b=1.0/10;
float c=5451346865546485f;
float d=c+1;
System.out.println(a);
System.out.println(b);
System.out.println(a==b);   //"=="用来判断d和f是否相等
System.out.println(c);
System.out.println(d);
System.out.println(c==d);

第一个输出结果为不相等,第二个输出结果相等。原因:浮点数只能表示有限的字符长度,存在舍入误差,只能是大约,接近但不等于的,且是离散的
最好完全避免使用浮点数进行比较!

字符拓展

char e1='a';
char e2='中';
System.out.println(e1);
System.out.println((int)e1); //强制转换
System.out.println(e2);
System.out.println((int)e2);

所有的字符本质上还是数字
转义字符:\n 换行 \t 制表符 …

布尔值拓展

boolean flag = true;
if (flag==true);

if (flag==true) 可以简写为 if (flag)

Less id more! 代码要精简易读

四、类型转换

public class Demo2 {
    public static void main(String[] args) {
        int a =128;
        byte b = (byte)a;
        double c = a;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println("=======================");

        System.out.println((int)23.7);
        System.out.println((int)-43.654f);
        System.out.println("=======================");
        char d = 'a';
        int e = d+1;
        System.out.println(d);
        System.out.println(e);
    }
}

强制转换:内存高 到 内存低;自动转换:内存低 到 内存高。

内存低到高:byte, short, char, int, long, float, double. 浮点数优先于整数。

public class Demo3 {
    public static void main(String[] args) {
        int m = 10_0000_0000;
        int n = 20;
        int total1 = m*n; //-1474836480,计算的时候溢出了
        long total2 = m*n; //-1474836480,转换之前已经出现问题了
        long total3 = m*(long)n; //20000000000,先把一个数转换为long
        long total4 = (long) m*n; //20000000000,先把一个数转换为long
        System.out.println(total1);
        System.out.println(total2);
        System.out.println(total3);
        System.out.println(total4);
    }
}

/*
输出结果分别为:
-1474836480
-1474836480
20000000000
20000000000
*/

注意点:

  1. 不能对布尔值进行转换;
  2. 不能把对象类型转换为不相关的类型;
  3. 把高容量转换为低容量时,采用强制转换;格式:(转换类型)变量名;
  4. 转换时可能存在内存溢出,或精度问题;

五、变量

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

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

//数据类型 变量名 = 值;

public class Demo04 {
    public static void main(String[] args) {
        int a=1,b=2,c=3;
        String name = "abc";
        char d='a';
        double pi= 3.1415926;
    }
}

注意事项:

  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型
  2. 变量名必须是合法的标识符
  3. 变量声明是一条完整的语句,每个声明都必须以分号结尾

变量作用域

public class Demo05 {
    static double salary = 2000; //类变量,static
    String name; //实例变量
    int age; //实例变量
    public static void main(String[] args) {
        int i = 10; //局部变量
        System.out.println(i);
        Demo05 demo05 = new Demo05();
        System.out.println(demo05.age);
        System.out.println(demo05.name);
        System.out.println(salary);
    }
}

类变量

从属于类,与类同时出现,同时消失

实例变量

实例变量从属于对象,如果不进行初始化,则输出的是这个类型的默认值

数值类型的默认值是0或0.0;字符类型的没忍住是u0000(即也是0 );布尔值的默认值是false;其他的默认值均为null。

局部变量

局部变量从属于方法里面(如例子中的main方法),只作用于方法的{}之间,且必须声明和初始化值

六、常量

final 类型 常量名=值

常量名一般使用大写字符

public class Demo06 {
    static final double PI =3.14;
    public static void main(String[] args) {
        System.out.println(PI);
    }
}

七、变量的命名规范

  1. 所有变量、方法、类名:见名知意;
  2. 类成员变量:首字母小写和驼峰原则(除了第一个单词外,后面的单词首字母大写) mouthSalary;
  3. 局部变量:首字母小写和驼峰原则;
  4. 常量:大写字母和下划线 MAX_VALUE;
  5. 类名:首字母大写和驼峰原则 Man, GoodMan;
  6. 方法名:首字母小写和驼峰原则 run(), runRun()。

八、运算符

Java语言支持的运算符:

  1. 算术运算符:+,-,*,/,%(模运算,即取余),++(自增),–(自减)
  2. 赋值运算符:=
  3. 关系运算符:>,<,>=,<=,==(等于用两个=来判断),!=(不等于),instanceof
  4. 逻辑运算符:&&,||,!(与或非)
  5. 位运算符:&,|,^,~,>>,<<,>>>(了解)
  6. 条件运算符::,?
  7. 扩展赋值运算符:+=,-=,*=,/=

算术运算符

public class Demo01 {
    public static void main(String[] args) {
        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);
    }
}

注意在输出a/b时(a,b均为整数类型),计算结果为小数0.5,因此在输出之前要将其中一个数转换为double。

public class Demo02 {
    public static void main(String[] args) {
        long a=123564843546L;
        int b =123;
        short c= 10;
        byte d= 8;
        double e= 1;
        System.out.println(a+b+c+d+e); //输出为double
        System.out.println(a+b+c+d); //输出为long
        System.out.println(b+c+d); //输出为int
        System.out.println(c+d); //输出为int
    }
}

运算过程中,如果有double类型,结果就是double类型;如果有long,结果就是long;如果没有double和long,结果都是返回int类型。

public class Demo04 {
    public static void main(String[] args) {
        int a=3;
        int b=a++; //执行完这个代码后,先给b赋值,a再自增
        //相对于在这里隐藏了一句代码 a=a+1
        System.out.println(a);

        //相当于在这里隐藏了一句代码 a=a+1
        int c =++a; //执行完这个代码后,a先自增,再给b赋值
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println("====================");
        int d=a--;
        int e=--a;
        System.out.println(d);
        System.out.println(e);
        System.out.println("====================");

        double i = Math.pow(2,4);
        System.out.println(i);
    }
}

输出结果为4,5,3,5。

a++是执行完这个代码后,先给b赋值,a再自增;++a是执行完这个代码后,a先自增,再给b赋值;a–和--a同理。

很多数学运算,我们会使用一些工具类来操作。

关系运算符

public class Demo03 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 21;
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(c%a);
    }
}

逻辑运算符

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));
        System.out.println("==================================");

        int c = 5;
        boolean d = (c<4)&&(c++<10);
        System.out.println(d);
        System.out.println(c);

    }
}

&&:与,两个变量都为真,结果才为真;

||:或,两个变量其中一个为真,结果就为真;

!:非,如果是真则为假,如果是假则为真。

短路运算:在进行判断时,前面一个为假,就不执行后面的命令了。

位运算符

用于二进制

A = 0011 1100

B = 0000 1101


A&B = 0000 1100

A|B = 0011 1101

A^B= 0011 0001 两个一样就为0

~B = 1111 0010

扩展运算符

public class Demo06 {
    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);
    }
}

字符串连接符

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("0"+a+b);
        System.out.println("0"+(a+b));
        System.out.println(a+b+"0");
    }
}

即+,在+两侧,只要有一侧存在String类型,就会把另外一个操作数转换为String类型。

如果String在前面,后面的直接拼接;如果String在后面,前面的依旧先进行运算后才与后面的进行拼接。

条件运算符(三元运算符)

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

public class Demo08 {
    public static void main(String[] args) {
        int score = 80;
        String type = score>60 ? "及格" : "不及格";
        System.out.println(type);
    }
}

八、包机制

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

包语句的语法格式为:package pkg1[.pkg2[.pkg.3]];

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

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

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

*为通配符,可以导入这个包下所有的类

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!