java基础学习

java基础语法学习

从零开始学习java的基础语法。

本次使用的工具是IDEA。

1、注释

注释不会被编译器编译,用于代码的解释。

// 这是一个单行注释

 /*
这是多行注释
 */

// 下面是文档注释
/**
* @Author 作者名称
*/

彩蛋

百度搜索“有趣的代码注释”,可以查看到众多有趣的注释。如:

/***
 *      ┌─┐       ┌─┐
 *   ┌──┘ ┴───────┘ ┴──┐
 *   │                 │
 *   │       ───       │
 *   │  ─┬┘       └┬─  │
 *   │                 │
 *   │       ─┴─       │
 *   │                 │
 *   └───┐         ┌───┘
 *       │         │
 *       │         │
 *       │         │
 *       │         └──────────────┐
 *       │                        │
 *       │                        ├─┐
 *       │                        ┌─┘
 *       │                        │
 *       └─┐  ┐  ┌───────┬──┐  ┌──┘
 *         │ ─┤ ─┤       │ ─┤ ─┤
 *         └──┴──┘       └──┴──┘
 *                神兽保佑
 *               代码无BUG!
 */

2、标识符

标识符相当于名字,java中所有组成部分都需要名字,类名、变量名以及方法名都是标识符。

关键字:指在java中已经被定义的单词。

标识符注意事项

3、数据类型

所有变量必须定义类型后才能使用。

int a = 10;            // 定义变量a的类型为int类型
System.out.println(a); // 输出结果为10

b = 10;                // b未定义类型,直接报错

(1)基本类型和引用类型

java分类两大类型:基本类型(八大基本类型)和引用类型

// 八大基本数据类型

// 整数型
byte  num1 = 1;      // byte类型占1字节
short num2 = 54;     // shrot类型占2字节
int   num3 = 456;    // int类型占4字节
long  num4 = 44868L; // long类型占8字节,使用(L)来标记为Long类型

// 小数型:浮点型
float  num5 = 1.5465F; // 占4字节,使用(F)标记表示为float类型
double num6 = 1.235465; // 占8字节

// 字符型
char user = 'A'; // 2字节,只能赋值一文字字或一个字母,要使用单引号
        
// 布尔类型
boolean flag = true; // 只有两个结果,对(true)或错(false)
// 引用类型

// 类(class) 
// 接口(interface)
// 数组(array)

(2)字节解释

位(bit):是计算机内部数据存储的最小单位,00001010是一个八位的二进制数
字节(byte):是计算机中数据处理的基本单位,1字节(byte)等于8位(bit)。
    
 1byte = 8bit
 1bit表示1位
 1byte表示1字节
    

    
字符:是指计算机总使用的字母、数字、文字和符号

(3)浮点型拓展

// float 是有限的 取值取的是大约值 接近但不等于
// 小数比较最好是使用double比较
float  f = 3.14f;
double d = 3.14;
System.out.println(f == d); // 结果为false,因为float取的是大约值,接近但不等于

float f1 = 13456789564f;
float f2 = f1 +1;
System.out.println(f1 == f2);  // 结果为true,float取的是大约的值

double d1 = 113456789564.1;
double d2 = d1 + 1;
System.out.println(d1 == d2);  // 结果为false

(4)char字符拓展

// 所有的字符本质还是数字
// 编码 Unicode 表:(97 = a 65 = A) 2字节

char c = 'a';
int  i = (int)c;
System.out.println(i); // 结果:97

char c1 = '\u0061';     // \u0061 为 unicode表代码
System.out.println(c1); // 结果:a

boolean布尔值拓展

boolean flag = true;
// if括号内只有一个值时,自动判断
if(flag == true) {}  // 新手用法
if(flag) {}          //老手用法,代码简洁易读  

(5)类型转换

高类型转低类型,需要强制转换
低类型转高类型,不用强制转换
布尔值不能被转换

//==============================================================
// 类型 低 ---------------> 高
// byte,short,char --> int --> Long --> float --> double
//==============================================================

byte b = 5;
int  i = 8;
byte b1 = (byte)i;  // 从int-->byte,高类型到低类型,需要进行强制转换
int  i1 = b;         // 从byte-->int,低类型到高类型,不需要转换,直接赋值没问题

char c = 'a';
int  i2 = c;
int  i2 = 98;
char c1 = (char)i4;
System.out.println(i2); // 字母“a”转换成int类型,数值为97;
System.out.println(c1); // int类型为98的变量,转换为char类型是b

(6)溢出问题

// int类型是4字节(byte),4byte = 32bit,
// 2^32 = 4294967296全部范围,分为负数和正数:-2147483648-2147483647
// int类型超出这个范围-2147483648-2147483647,表示溢出。
int num1 = 10_0000_0000;  // JDK7就有的特性,数字之间可以用下划线分割
int year = 20;
long sun = ((long)num1)*year;  // 先强制转换在计算,就能解决溢出问题
System.out.println(num1*year); // 溢出就会报错
System.out.println(sun);   

// 标记为long类型,一般用大写(L),因为小写(l)与数字1相似。

4、变量

(1)变量的作用域

局部变量:指在方法内声明的变量。(一般都必须初始化值)

是在方法中声明,并且只能方法中使用。

public class Demo2 {
   // 类变量(使用static标记的变量)
   // 与类一起出来,一起消失,
   // 使用类变量在方法中可以不用新建对象,直接调用即可
    static double dou = 4585;

    // 实例变量:从属与对象,如果不进行初始化,这个数据类型默认是 0或0.0
    // 布尔值默认是false
    // 出了基本类型,其他的都默认为 null
    String name;
    int age;

    public static void main(String[] args) {
        int a = 1; // 局部变量,必须声明和初始化

        // 使用声明的实例变量
        Demo2 demo2 = new Demo2(); // 新建Demo2对象
        demo2.age = 18;
        System.out.println(demo2.name);
        System.out.println(demo2.age);

        System.out.println(dou); // 不用新建对象,直接使用类变量
    }
}

(2)常变量

常量可以理解为特色的变量,初始化后不能再改变值。

常量名一般使用大写字符。

// 关键字:static(静态的)、final(常量)
// 关键词不区分先后

staic final double Pi = 3.14; // 该静态常量,可以在方法中直接调用

(3)变量的命名规范

1、见名知意,使用英文命名。

2、成员变量:使用首字母小写和驼峰原则(第一个单词以外,后面的单词首字母大写),如:lastName,createDate

3、常量:大写字母和下划线:MAX_VALUE

4、类名:首字母大写和驼峰原则,如:Man,ForntUserSave

5、方法名:首字母小写和驼峰原则

5、运算符

(1)自增(++)、自减(--)

// ++ -- 自增  自减 一元运算符(只使用到一个数值)
int a = 3;

int b = a++; // 变量a先赋值给b后,在自增  b值结果为3
// 相当于
// int b = a;
// int a = a + 1;

int c = ++a; // 变量a先加1后,在赋值给C,  c值结果为5
// 相当于
// int a = a + 1;
// int b = a;

(2)运算拓展

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

(3)逻辑运算符

// 与 或 非
boolean a = true;
boolean b= false;

System.out.println(a && b);     // 与(&&)运算,当两个都为真才为真,否则为假
System.out.println(a || b);     // 或(||)运算,只要有一个为真,则为真
System.out.println(!(a && b));  // 非(!)运算,取反

// 短路运算
// 使用&&时第一个为假,则后面就不会执行了
int c = 3;
boolean d = (c > 4)&&(++c < 2);
System.out.println(d);
System.out.println(c);   // 结果d的值为3,因为(c>4)为假,后面就不执行了

// 使用||时第一个为真,则后面就不会执行了
boolean f = (c > 2)||(++c < 10);
System.out.println(f);
System.out.println(c); // 结果为3

boolean g = (++c > 1)||(c < 10); // 测试在运算时,可以使用自增
System.out.println(c);           // 结果为4

(4)位运算

/*
A = 1001 0001  // 八个数字
B = 0001 1101  // 八位数字

// A低第一个数字对应B第一个数字,A的第二个数字对应B的第二个数字.....
A&B = 0001 0001   // 对应的数字都为1(即为true)时,得到1,否则得到0
A|B = 1001 1101   //对应数字只要有一个为1(true)时,得到1,否则得到0
A^B = 1001 1101   // 对应连个都为1时得到1,两个都为0是得到0,一个为1一个为0时,得到1
~B = 1110 0010    // 取反

2*8 = 16 2*2*2*2
<< *2
>> /2
 */
/*
0000 0001  1
0000 0010  2
0000 0011  3
 */
System.out.println(1<<3); // 即1*2*2*2 = 8,所以结果为8

(5)字符串拼接

int a = 3;
int b = 5;

// 字符串连接符
System.out.println("a" + a +b);  //当运算中有字符,则默认为字符类型,进行拼接,结果为:35a
System.out.println(a + b + "a"); // 当字符是在后面时,先进行运算,在拼接,结果为:8a

(6)三元运算符

// 三元运算符 ?:
// x?y:z  表示:如果x为真,则输出y,否则输出z

int x = 3;
int y = 4;
int z = 5;
int a = x>2?4:5;
System.out.println(a); // 因为x>2为真,结果为4

6、包(pachage)

创建不同的包,避免同样类名的冲突,同一个名字的类名可以放到不同的包中,就不会冲突了。

包名一般使用域名的倒置。

使用定义的类,需要导入包。

7、javaDoc

@author  作者名

@version  版本号

@ since  指明需要最早使用的jdk版本

@param  参数名

@return  返回值

@throws  异常抛出情况

posted @ 2020-04-08 15:04  一座塔一盏灯  阅读(228)  评论(0编辑  收藏  举报