JAVA学习 --初识JAVA

Posted 庸人冲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA学习 --初识JAVA相关的知识,希望对你有一定的参考价值。

JAVA概述

Java的由来

Java是一门面向对象的编程语言,其创始人詹姆斯.高斯林,并誉为"Java之父",高斯林在Sun公司与其团队合作开发了一套名为Oak的语言,这是Java语言的前生,Oak语言是为了开发智能家电而出现的,但是因为想法过于超前使得Oak语言没有得到硬件厂商的青睐。在1995年,互联网的迎来了蓬勃的发展,这也给了Oak语言重生的机会,因为Oak是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。当Sun公司准备注册商标时,发现Oak已经被注册了,有一天,几位开发人员在一家名为"爪蛙"咖啡的店里讨论命名时,有一位提议使用"Java",得到了肯定,于是"Java"语言就诞生了。

JDK JRE JVM 三种的关系

JDK: Java Development Kit: 是Java程序开发工具包,包含JRE和开发人员使用的工具。

JRE: Java Runtime Environment: 是java程序的运行时环境,包含JVM和运行时所需要的核心类库

JVM: Java Virtual Machine: Java虚拟机,是运行所有java程序的假想计算机,是java程序的运行环境。

JDK包含了JRE, JRE包含了JVM。

Java编写代码的步骤

  1. 编写源代码:创建.java后缀的文件,使用相关的文本编辑器编写代码,并保存。
    如:
public class Helloworld {  // 类是java当在所有源代码的基本组织单位
	public static void main(String[] args){ // 方法
		System.out.println("Hello,World");  // 方法体
	}


2. 编译java文件,在CMD窗口中切换到.java文件路径输入 javac HelloWorld.java,会在当前文件夹生成一个.class字节码文件。

3. 使用java命令运行生成的字节码文件,注意不要加后缀。

关键字和标识符

java中关键字有很多,比如基本数据类型,4种权限修饰符,extends(继承),implements(实现),throws(异常处理),abstract(抽象),final 等等。

标识符

程序中自定义的名称,比如类名、方法名、变量名等,都是标识符。

命名规则

  1. 标识符包含26个**英文字母(区分大小写)、0-9数字$_**。

  2. 标识符不能以数字开头

  3. 标识符不能是关键字

命名规范

  1. 类名:首字母大写,后面每个单词首字母大写,大驼峰命名法

  2. 变量名、方法名:首字母小写,后面每个单词首字母大写,小驼峰命名法

数据类型

Java中的数据类型分为基本(内置)数据类型和引用数据类型。

基本数据类型

数据类型关键字内存占用取值范围
字节型byte1个字节-128~127
短整型short2个字节-32768~32767
整型int4个字节-231~231-1
长整型long8个字节-263~263-1
单精度浮点型float4个字节1.4013E-45~3.4028E+38
双精度浮点性double8个字节4.9E-324~1.7977E+308
字符型char2个字节0~65535
布尔型boolean1个字节true / false

注意事项:

  1. 字符串不是基本类型,而是引用类型
  2. 浮点型可能只是一个近视值,并非精确的值。
  3. 数据范围与字节数不一定相关,例入float数据范围比long更加广泛,但是float是4个字节,long是8个字节。
  4. 浮点数默认是double类型,如果使用float类型,加后缀F
  5. 整数默认是int类型,如果使用long,加后缀L
  6. Java中没有无符号数。

引用数据类型

字符串、数组、类、接口、lambda

数据类型转换

java程序中要求参与计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。

数据类型不一样时会发生数据类型转换。

自动类型转换(隐式转换)

  1. 特点:代码不需要进行特殊处理,自动完成。
  2. 规则:数据范围从小到大,与字节数不一样相关。
public class Demo01DataType
{
    public static void main(String[] args) {
        System.out.println(1024); // 默认int
        System.out.println(3.14); // 默认double

        // 左边long 右边int
        // long <-- int  符合数据范围从小到大
        long num1 = 100;  // 这一行代码发生了自动类型转换
        System.out.println(num1);
        
        // 左边double 右边float
        //  double <-- float  符号从小到大的规则
        double num2 = 2.5f;  // 也发生了自动类型转换
        System.out.println(num2);
		
		
		// 左右式float类型,右边是long类型,
		// float <-- long ,【数据范围】是float更大一些,符合从小到大的规则
		float num3 = 30L;  // 也发生了自动类型转换
		System.out.println(num3);
    }
}

数据范围从大到小会报错

public class Demo02DataType{
	public static void main(String[] args){
		int num = 100L;  // long --> int 不能自动类型转换,可以强制转换
		System.out.println(num);
	}
}

强制类型转换(显式转换)

  1. 代码需要进行特殊的格式处理,不能自动完成。
  2. 格式: 范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据
public class Demo02DataType{
	public static void main(String[] args){
        // smaller type varName = (smaller type)value;
  		int num = (int)100L;
		
		System.out.println(num);
	}
}

注意事项:

  1. 强制类型转换一般不推荐使用,可能发生精度损失数据溢出

    赋予的值的大小超过了变量的类型存储空间就会发生数据溢出

public class Demo02DataType{
	public static void main(String[] args){
        // 数值超过int类型
  		 int num1 =  6000000000;  
		System.out.println(num);
	}
}

// 强制类型转换,数据溢出
public class Demo02DataType{
    public static void main(String[] args){
        int num1 = (int)6000000000L;
        System.out.println(num1);
    }
}
// 显示的值不准确

// 强制类型转换,精度损失
public class Demo02DataType{
	public static void main(String[] args){
		int num3 = (int)3.99;
		System.out.println(num3);
	}
}

  1. btye/short/char都可参与数字运算。
public class Demo02DataType{
	public static void main(String[] args){	
		char ch = 'A';
		System.out.println(ch + 1);
	}
}

  1. 三种类型在参与运算时,会被首先提升为**int类型**,然后再计算。
public class Demo02DataType{
	public static void main(String[] args){	
		 short num4 = 1;
       	 short num5 = 2;
        short result = num4 + num5;
        System.out.println(result);
	}
}

// 使用int变量接收后
int result = num4 + num5;
// 或则将结果强制转换为short
short result = short(num4 + num5);

  1. 布尔型不能发生任何数据类型转换

以上是关于JAVA学习 --初识JAVA的主要内容,如果未能解决你的问题,请参考以下文章

JAVA学习总结

JAVA学习总结

java学习系列1--初识java

JAVA学习 --初识JAVA

JAVA学习 --初识JAVA

秒懂Java第1章_初识Java04_学习资料