JAVA详细完整基础知识day01

 1 JAVA基础语法

java是目前应用最广泛的程序编程语言,由詹姆斯.高斯林先生创立。Java是由C语言演变过来的,与C关系紧密。不同的是两种的编程思想是不同的,Java是面向对象来实现业务的,而C是面向过程,两种各有利弊都是当下市场主流的编程语言。

1.1 标识符

标识符可以理解为一个名字。

我们的项目中都会有一些包名、类名、方法名、变量名等等。这些元素都是我们起的名称就是一种标识符。

标识符的起名规则

1.标识符可以由字、文字母、划线、元符号$组成,但不能含有@、%空格等其他特殊的字符。

2.不能以数字开头:123name就是不合法的。

3.不同大小写的标识符含义不同,如name和Name就是两个不同的标识符。

4.标识符的起名要做到见名知意。

5.标识符不能是Java的关键字。

6.以驼峰规则命名标识符,如:findUserById。

错误案例:1name / _ name / name_ / $ name / name $

总结口诀:

英美属(数)下,不搞特殊,数字靠后,大小不同。

1.2 关键字

是Java中赋予特殊意义的小写单词,一共50个关键字,保留了go和const

注:关键字不能作为标识符。

 main不是关键字,是标识符,是一般程序的入口。

true,false,null这些都不能作为关键字

1.3 注释

注释可以向任何阅读代码的人描述或者解释程序的实现思路,如何使用以及其它任何相关信息, 提高代码的可读性,方便后期的维护与复用。

Java的注释有3种:

1. 单行注释: 注释单行内容.
格式: 每行都以”//”开头.
快捷方式: Ctrl+/ 添加注释,同样的快捷键,再按一次取消注释

2. 多行注释:注释多行内容,虽然叫多行注释,也可注释单行内容.
格式: 以” /* ”开头, 以” * / ”结束.
快捷方式: 可以输入” /* ”之后按回车添加注释

3. 文档注释: 一般用来注释类和方法,通过注释内容来记录类或者方法的信息.
格式: 以” /** ”开头。 以” * / ”结尾
快捷方式: 输入 “ /** ” 之后按回车添加注释
 

package cn.test.basic;

/**本类用于练习注释*/
public class CommentDemo {
    //我是一个单行注释
    
    /*
     * 我
     * 是
     * 一
     * 个
     * 多行注释
     */
    
    /**
     * 我是一个文档注释/DOC注释
     * 我也可以注释多行内容
     * 除此之外,我还可以添加一些作者/时间/版本...的信息
     */
    public static void main(String[] args) {
        System.out.println("我就是想测试下注释会不会执行~");
    }
}

2 数据类型

2.1数据类型的介绍

 在Java的使用中我们肯定会用到变量,变量是要占本地的内存里的,Java是一个强类型的语言,我们就根据数据占用不同储存空间将变量划分八种基本数据类型。数据最小的储存单位是Byte。 基本数据类型变量: 存的是值的本身

引用类型数据变量: 存的是对值的引用[ 地址值 ]

 

八大基本类型速查表

 拓展:常用的转换关系:
位 bit,来自英文bit,音译为“比特”,表示二进制位。
1 Byte = 8 Bits (1字节 = 8位)
1 KB = 1024 Bytes 1 MB = 1024 KB 1 GB = 1024 MB                                                                 Java中整数默认为int类型                                                                                                              Java中小数默认为double类型                                                                                                        long 长整型 需要在结尾添加l/L作为标识,long l = 2L;                                                                      double 双精度浮点型 需要在结尾添加f/F作为标识,float f = 3.5f;                                                char的默认编码就是utf-16

2.2 Demo练习1

创建包: cn.test.basic
创建类: TestInfo.java
需求: 在控制台打印: java架构师今年20岁,月薪100000.99,感慨java是世界上最好的语言

package cn.test.basic;
/**本类用于完成个人信息输出案例*/
public class TestInfo {
    //1.创建程序的入口函数main()
    public static void main(String[] args) {
        /**定义变量规则:变量的类型  变量名  = 变量的值*/
        /**String是字符串类型,用来保存多个字符*/
        //2.定义变量
        String name = "";//定义一个String变量用来保存姓名"江江"
        int age = 16;//定义一个age变量用来保存年龄16
        double salary = 100000.66;//定义一个变量salary用来保存工资
        //3.我们可以通过打印语句查看变量的值
        System.out.println(name);//println()这是换行打印
        System.out.println("java架构师"+name+",今年"+age+"岁,月薪"+salary+",感慨Java是世界上最好的语言!");
    }
}

2.3 Demo练习2

查看基本类型的最大值与最小值

创建包: cn.test.basic
创建类: TestTypeScope.java
 

package cn.test.basic;
/**本类用于测试基本类型*/
public class TestTypeScope {
    //1.创建程序的入口函数
    public static void main(String[] args) {
        /**1.整形类型:byte short int long*/
        /**2.Java给8大基本类型都提供了类型对应的“工具箱”*/
        /**3.int类型的工具箱比较特殊,叫做:Integer*/
        //2.定义对应类型的变量:格式:类型 名字 = 值 ;
        byte byteMin = Byte.MIN_VALUE;
        byte byteMax = Byte.MAX_VALUE;
        System.out.println("byte类型的最小值为:" + byteMin);
        System.out.println("byte类型的最大值为:" + byteMax);
        
        short shortMin = Short.MIN_VALUE;
        short shortMax = Short.MAX_VALUE;
        System.out.println("short类型的最小值为:" + shortMin);
        System.out.println("short类型的最大值为:" + shortMax);
        
        int intMin = Integer.MIN_VALUE;
        int intMax = Integer.MAX_VALUE;
        System.out.println("int类型的最小值为:" + intMin);
        System.out.println("int类型的最大值为:" + intMax);
        
        long longMin = Long.MIN_VALUE;
        long longMax = Long.MAX_VALUE;
        System.out.println("long类型的最小值为:" + longMin);
        System.out.println("long类型的最大值为:" + longMax);
        
        /**4.浮点类型 :float double*/
        float floatMin = Float.MIN_VALUE;
        float floatMax = Float.MAX_VALUE;
        System.out.println("float类型的最小值为:" + floatMin);
        System.out.println("float类型的最大值为:" + floatMax);
        
        double doubleMin = Double.MIN_VALUE;
        double doubleMax = Double.MAX_VALUE;
        System.out.println("double类型的最小值为:"+ doubleMin);
        System.out.println("double类型的最大值为:"+ doubleMax);
        
        /**5.boolean布尔类型只有两个值true与false
         * 虽然true和false不是关键字,但是也不可以用作标识符*/
        boolean b1 = true;
        boolean b2 = false;
        
        /**6.测试char 字符类型
         * 字符型的数据需要使用单引号 ' ' 来包裹
         * char类型可以存数字,但是会从ASCII码表查出这个数字对应的字符来打印
         * 128~65535这些数字,也可以保存,但是eclispe一般显示为?*/
        char c1 = 'a';//字符型可以保存一个字母
        char c2 = '国';//字符型还可以保存一个汉字
        char c3 = '6';//字符型可以保存一个字符7
        char c4 = 97;//字符型可以保存数字,但是会查ASCII,打印的是字符a
        char c5 = 55;//字符型可以保存数字,但是会查ASCII,打印的是字符7
        char c6 = 199;
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        System.out.println(c6);
    }

}

3 基本类型的字面值规则(5条)

字面值就是常量,可直接表示为一个具体的数字或字符串的值。比如
a = b * 2这个语句中,2就是一个字面值,它本身就是一个具体的值

3.1整数类型的字面值类型是int类型

一般我们定义一个整数时,可以认为是一个int类型

int x = 99999;
//byte y = 300;//错,300是int类型,byte存不下
//int z = 999999999999;//错,虽然是int类型,但是超出范围
long h = 999999999999L;//如果要定义long类型需要加后缀L

3.2 浮点数类型的字面值类型是double类型

一般我们定义一个小数时,可以认为是一个double类型

	double d = 3.14;
	//float f = 3.14;//错,3.14认为自己是double类型
	float f = 3.14F;//如果要定义float类型需要加后缀F
	double d2 = 3D;//如果要定义的小数是整数,最好加D方便阅读

3.3 字面值后缀L D F

long x =99999999999L;//字面值是int类型,需转成long类型的数据,加字面值后缀L即可
float b = 3.0F;//3.0字面值是double类型,加后缀F会变成float类型
double d = 3D;//3字面值是int类型,加后缀D,会变成double类型

3.4 byte,short,char三种比int小的整数可以用范围内的值直接赋值

byte b1=127;//对,
byte b2=128;//错,超出byte的范围
char c1=97;//对,对应的是码表中的'a'
char c2 =69999;//错,超出char的范围

3.5 进制前缀

0b - 标识这是2进制 ,如:0b0101

0   - 标识这是8进制, 8进制是三位,如: 023

0x - 标识这是16进制,如: 0x0001

		//10进制,底数为10:10^2 10^1 10^0 =100+0+0=100
		System.out.println(100);//默认10进制,打印100
		//2进制,底数为2:2^2 2^1 2^0 =4+0+0=4
		System.out.println(0b100);//2进制,打印4
		//8进制,底数为8:8^2 8^1 8^0 =64+0+0=64
		System.out.println(0100);//8进制,打印64
		//16进制,底数为16:16^2 16^1 16^0 =256+0+0=256
		System.out.println(0x100);//16进制,打印256

4 基本类型的类型转换

在实际使用中有时我们定义变量太占内存想节约空间怎么办?,有时定义变量的数据类型不同想进行一些运算怎么办?这时我们就可以用到数据类型的转换。

以下按变量的大小进行转换,箭头左边的是小类型,箭头所指为大类型。

4.1小类型转大类型(直接转换)

byte m = 120;
int n = m;//小转大,右面的m是小类型,给左面的n大类型赋值,可以直接使用
float f = 3.2f; double d = f; -->可以执行

m的值转化为二进制则为01111000由此可见m是一个字节8位,转化为int类型时他的二进制就是在m的前面填上24个0(int是4个字节32位)

4.2大类型转小类型(强制转)

容量大的类型转换为容量小的类型时必须使用强制类型转换。

short x = 516;
byte y =(byte)x;//大转小,右面x给左面的y小类型赋值,不可以,需要强制类型转换

上图是short强制转换为byte,x的二进制0000001000000100(2字节16位)转化byte1字节8位时就只需截取x的8位二进制的数据类型就可以了00000100。

 注意:

1.转换过程中可能导致溢出或损失精度
例如:int i =128; byte b = (byte)i; //打印的结果是-128
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
2.浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
例如:float f = 32.7f; int a2 =(int) f; //打印的结果是32
3.不能对boolean类型进行类型转换。

4.口诀:小转大直接转,大转小强制转,浮变整小数没,布尔不可转换。
 

5 相同/不同的数据类型的运算规则

5.1 以大为主

System.out.println(3/2);//1,int/int,得到的结果类型还是int
System.out.println(3/2d);//1.5,int/double。得到的结果是double

5.2 比int小的(byte,short,char)转化为int

byte a = 1;
byte b = 2;
byte c = (byte)(a+b);
//a+b会自动提升成int类型,右面得运算结果就是int大类型
//给左面的byte小类型赋值,不可以,需要强转。

5.3 整数运算溢出

byte a=1;
byte b=127;
System.out.println(a+b);
//byte范围是-128~127,a+b=128>127超出了byte的储存范围则byte自动提升为int

整数运算,类似于一个钟表,转到最大时,再转会回到最小。

练习demo

//计算:光速运行一年的长度是多少米?3亿m/s
System.out.println(300000000L * 60 * 60 * 24 * 365);//结果为9460800000000000
//因为做了大的整型数据的运算,会超出int取值范围。解决方法:把整数提升成long类型。

5.4 浮点不精确

这是一个很正常的现象,计算机本身的运算是使用二进制来进行运算的,比如0.1在我们看来是一个小数可以除的尽,但在计算机看来,0.1用二进制表示则是一个无线小数,所以我们在进行浮点数数据类型的计算时则会出现不精确的问题。而强大的java提供了解决小数运算问题(后续帖子有详细的介绍哦!请大家多多关注!!!)

5.5 浮点数的特殊值

Infinity 无穷大 3.14/0

NaN not a number 0/0.0 或 0.0/0

5.6 扩展

转义字符

制表符 ‘\t’  回车‘\r’  换行 ‘\n’  \ --- ‘\\’  单引号 ‘\’’  双引号 ‘\”’

本章帖子的思维导图(博主会在Java基础最后的一个帖子附上清晰完整的思维导图,大家多多关注)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值