zoukankan      html  css  js  c++  java
  • 【黑马JavaSE】1.1JavaSE、环境变量、CMD使用、常量、变量、数据类型转换(自动/强制)、ASCII码表、Unicode万国码表

    文章目录

    SUN公司,詹姆斯.劳瑟琳,Java祖师爷

    在这里插入图片描述
    在这里插入图片描述Java5和Java8更新力度比较大,市场75%的比例用Java8

    进制转换:大转小–辗转相除法在这里插入图片描述

    位权相加法
    在这里插入图片描述
    最小单位是bit,但计算机存储单位最小不是bit,而是8位为一个字节,每逢8位是一个字节,这是数据存储的最小单位。
    在这里插入图片描述
    1 Byte = 8 bit

    100Mbps,移动公司卖的宽带,
    单位转换以后相当于15MB/s
    在这里插入图片描述

    MS-DOS(Microsoft Disk Operating System)现在用的人很少了
    在这里插入图片描述
    命令提示符CMD集成了大部分MS-DOS的功能。

    切换盘符不分大小写
    在这里插入图片描述
    此电脑是一个假象,其实是C盘里面的一个文件夹
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    cls是清屏命令
    dir是查看文件夹内容

    红色关闭×也是图形化界面,可以用exit

    在这里插入图片描述

    JVM虚拟机本身不是跨平台的,Windows专用JVM,Linux专用JVM,Mac专用JVM,只有你的Java程序是跨平台的,而功劳是你的JVM起到翻译的作用

    Java语言开发环境搭建

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    JRE,Java运行环境,肯定已经包含JVM了
    JDK,开发工具包,包含JRE和开发人员的工具
    想要运行,下载JRE;想要开发,下载JDK

    在这里插入图片描述
    在这里插入图片描述

    Java Archive 历代存档,在里面找Java SE9.0.4
    在这里插入图片描述
    JavaSE开发工具包9.0.4
    在这里插入图片描述
    在这里插入图片描述

    1.建议不要有中文,不要有空格。。。担心乱码和空格导致的转义混乱。
    2.在jdk里已经有JRE了,不需要再安装公共JRE了

    然后非常快就能安装完。
    看到这些目录时,JDK已经安装完成了(最好目录和图一致)
    在这里插入图片描述

    Java通过命令来运行,这些命令都在bin里面,bin是binary的缩写
    在这里插入图片描述

    要运行记事本,可以后面不写.exe (notepad在C:/Windows/System32里)
    C:/Windows/System32里的东西很重要,千万不能删
    在这里插入图片描述

    在这里插入图片描述
    可以不用写后缀名,也能运行

    在这里插入图片描述
    但是为什么Java不能运行呢在这里插入图片描述
    因为notepad是亲生了,已经写在了path里。而系统还不认识Java

    把Java添加到环境变量的方法

    下方的系统变量是全局有效的在这里插入图片描述

    请选择java/bin的上一级目录作为Java的家
    在这里插入图片描述

    一回车就到了在这里插入图片描述

    这说明%SystemRoot%被翻译成了‘C:/Windows’

    在这里插入图片描述

    在这里插入图片描述
    可以用这种方式添加多个版本的Java在这里插入图片描述

    javac.exe 是 编译器
    java.exe 是 解释器

    javac HelloWorld.java 有C就有后缀
    java HelloWorld 没有C就有后缀(java解释的是class文件里的类名)

    dir可以看当前目录
    tree可以看当前的文件树
    cd打开文件
    cls清屏

    win+R 可以1、cmd开启命令提示符,2、calc开启计算器

    命令行CMD里一些报的错误

    public class Helloworld,类名与文件名不一致错误
    在这里插入图片描述

    main主函数写错的错误在这里插入图片描述

    String首字母小写的错误
    在这里插入图片描述

    第三行没有写 ; 的错误
    在这里插入图片描述
    写成了中文字符,会报两个错

    在这里插入图片描述

    命令控制行常用操作的代码展示

    //这是一行注释信息
    //这是第二行注释信息
    /*
    	无论这里
    	占多少行
    	只要是在这个范围内
    	都算注释
    */
    	public static void main (String[] args){
    	//第二行是万年不变的固定方法,代表main方法,程序的起点所在
    		System.out.println(
    		"HelloWorld!!!
    "+
    		"dir可以看当前目录
    "+
    		"tree可以看当前的文件树
    "+
    		"cd打开文件
    "+
    		"cls清屏
    "+
    		"win+R 可以
    "+
    		"1、cmd开启命令提示符
    "+
    		"2、calc开启计算器
    ");
    		//第三行是打印输出语句,即屏幕输出
    

    Notepad++、注释、标识符、常量

    记事本看不了行号,于是用增强版notepad++
    安装无脑下一步。
    1、首选项–新建
    在这里插入图片描述
    可以快速定位行号

    注释
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    常量的代码展示

    public static void main (String[] args){//第二行是万年不变的固定方法,代表main方法,程序的起点所在
    		System.out.println(
    		"HelloWorld!!!
    "+
    		"dir可以看当前目录
    "+
    		"tree可以看当前的文件树
    "+
    		"cd打开文件
    "+
    		"cls清屏
    "+
    		"win+R 可以
    "+
    		"1、cmd开启命令提示符
    "+
    		"2、calc开启计算器
    ");
    		//第三行是打印输出语句,即屏幕输出
    		
    		System.out.println("-------常量的使用--------");
    		//字符串常量
    		System.out.println("ABC");
    		System.out.println(" ");//字符串两个双引号中间的内容为空
    		System.out.println("XYZ");
    		
    		//整数常量
    		System.out.println(300);
    		System.out.println(-500);
    		
    		//浮点数常量(小数)
    		System.out.println(3.14);
    		System.out.println(-2.5);
    		
    		//字符常量
    		System.out.println('A');
    		System.out.println('6');
    		//错System.out.printin('');//两个单引号中间必须有且仅有一个字符,没有不行. 
    		//错System.out.printIn('AB');//两个单引号中间必须有且仅有一个字符
    		
    		//布尔常量
    		System.out.println(true);
    		System.out.println(false);
    		
    		//空常量,不能直接用来打印输出
    		//错System.out.println(null);
    		
    		System.out.println(100);//默任int型
    		
    		System.out.println(100L);//附加L,就变为long型
    		}
    

    在这里插入图片描述

    char类型的值可以表示为十六进制值,其范围从u0000到Uffff

    Java核心卷书上摘抄
    在这里插入图片描述

    在这里插入图片描述

    字符常量‘单引号’里面哪怕写一个空格,不写是不行的;即char不能不写

    在这里插入图片描述

    基本数据类型:四类八种

    在这里插入图片描述
    在这里插入图片描述

    整数型int(4个字节)的范围:-21亿-+21亿(4个字节)

    单精度(4个字节)和双精度(8个字节)的区别在于精度

    双精度更精确,E+38代表10的38次方。范围和他的内存占用不一定相关,科学记数法省空间。

    float(4B)虽然比long(8B)小一半,但是float的数据范围比long大,因为科学计数法

    字符型(2个字节):0-6万,Java中的char可以表示中文,每一个数字都和一个字符对应

    int整型

    在这里插入图片描述

    long长整型

    在这里插入图片描述

    布尔类型(1个字节):Boolean

    注意:写在上面图里了

    变量的使用

    在这里插入图片描述

    变量的代码展示

    System.out.println("-------变量的使用--------");
    		//创建一个变量
    		//第一步格式:数据类型  变量名称;
    		int  num1;
    		//向变量中存入数据;
    		//第二步格式:变量名称 = 数据值;
    		num1 = 10 ;
    		//当打印输出变量名称时,显示出来的是变量的内容
    		System.out.println(num1);//10
    		 
    		 //改变变量当中原来的数字,变成新的数字
    		num1 = 20 ;//20
    		System.out.println(num1);//20
    		
    		//使用一步到位的格式来定义变量
    		//格式:数据类型  变量名称 = 数据值;
    		int num2 = 25 ;
    		System.out.println(num2);//25
    		
    		byte num3 = 30 ;//注意,右侧数据大小,不能超过左侧数据类型的表示范围
    		System.out.println(num3);//30
    		
    		//错 byte num4 = 400 ;//右侧超出了byte数据范围(-128~+127)
    		
    		//错 long num5 = 3000000000;//错误: 过大的整数: 3000000000
    		
    		//在使用long时,一定要跟大写L
    		long num5 = 3_000_000_000L;//3000000000 带下划线更方便读, Java编译器会去除这些下划线
    		long num51 = 3000000000L;  //3000000000
    		System.out.println(num5);
    

    在这里插入图片描述

    变量的注意事项,代码展示

    使用变量的时候,有一些注意事项:
    1,如果创建多个变量,那么变量之间的名称不可以重复。
    2,对于float和long类型来说,字母后缀F和L不要丢掉。
    3,如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。
    4,没有进行赋值的变量,不能直接使用;一定要赋值之后,才能使用。
    5,变量使用不能超过作用域的范围。
    【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
    6,可以通过一个语句来创建多个变量,但是一般情况不推荐这么写。

    System.out.println("-------变量的注意事项--------");
    		/*
    		使用变量的时候,有一些注意事项:
    		1,如果创建多个变量,那么变量之间的名称不可以重复。
    		2·对于float和long类型来说,字母后缀F和L不要丢掉。
    		3,如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围。
    		4·没有进行赋值的变量,不能直接使用;一定要赋值之后,才能使用。
    		5.变量使用不能超过作用域的范围。
    		【作用域】:从定义变量的一行开始,一直到直接所属的大括号结束为止。
    		6·可以通过一个语句来创建多个变量,但是一般情况不推荐这么写。
    		*/
    		int 这是一个可能报错的变量定义;//但是没报错。--因为变量必须赋值,否则不能用
    		
    		{
    			int num6 = 60 ;
    			System.out.println(num6);//60
    		}
    		//System.out.println(num6);//已经超出了(定义域)所属的大括号范围,变量不能再使用了
    		
    		int num6 = 60 ;//大括号里的num6消失了,可以重新定义再使用,没有问题
    		System.out.println(num6);
    		
    		System.out.println("ctrl+S保存notepad文件");
    		
    		/*1*/ //float floatxiaoshu = 1.7E308;//错误: 不兼容的类型: 从double转换到float可能会有损失
    		
    		/*2*/ //float floatxiaoshu = 3.4E38;//错误,需要加上F 。报错内容:不兼容的类型: 从double转换到float可能会有损失
    		float floatxiaoshu = 3.4E38F;
    		System.out.println(floatxiaoshu+",float和long必须加上F、L才能正确");
    		
    		boolean var1 = true;
    		System.out.println(var1);//true 
    		var1 = false;
    		System.out.println(var1);//false
    		//将一个变量的数据内容,赋值交给另一个变量
    		//右侧的变量名称var1已经存在,里面装的是false布尔值
    		//将右侧变量里面的false值,向左交给var2变量进行存储
    		boolean var2 = var1;
    		System.out.println(var2);//false
    

    数据类型转换

    要是读者读到这里连代码都运行不了,那么请自行去Blibli搜索黑马Java基础课从头学起,基础不牢,地动山摇

    当数据类型不一样时,将会发生数据类型转换

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

    1.特点:代码不需要进行特殊处理,自动完成。

    2.规则:数据范围从小到大。

    System.out.println("-------自动类型转换--------");
    		//左边是long类型,右边是默认的int类型,左右不一样
    		//一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储
    		//int--> long,符合了数据范围从小到大的要求
    		//这一行代码发生了自动类型转换。
    		long longnum = 100 ;
    		System.out.println(longnum); //100
    		
    		//左边是double类型,右边是float类型,左右不一样
    		//float--> double,符合从小到大的规则
    		//也发生了自动类型转换
    		double doublenum = 2.5F;
    		System.out.println(doublenum);//2.5
    		
    		//左边是float类型,右边是long类型,左右不一楼
    		//long--> float,范围是float更大一些,符合从小到大的规则
    		//也发生了自动类型转换
    		float floatnum = 30L;
    		System.out.println(floatnum);//30.0,整数转为float,float是有小数点的
    

    在这里插入图片描述

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

    如果范围大转范围小,不用强制类型转换就会出错在这里插入图片描述
    报的错误在这里插入图片描述

    System.out.println("-------强制类型转换--------");
    		
    		int intnum = 100 ; //右边100(int)赋值给-->左边int,对应,没问题
    		System.out.println(intnum);	 //100
    		
    		int intnum = 100L; //右边100L(long)赋值给-->左边int,从大变小,会溢出,有问题
    		//long->int,不是从小到大,因此不能发生自动转换。可能会有
    

    强制类型转换的使用方法

    特点:代码需要进行特殊的格式处理,不能自动完成。

    格式:范围小的类型 范围小的变量名 =(范围小的类型) 原本范围大的数据;

    (格式很简单,你想转成什么格式,你就在前面加上小括号)

    System.out.println("-------强制类型转换--------");
    		
    		int intnum1 = 100 ; //右边100(int)赋值给-->左边int,对应,没问题
    		System.out.println(intnum1);	 //100
    		
    		//错int intnum = 100L; //右边100L(long)赋值给-->左边int,从大变小,会溢出,有问题
    		//long->int,不是从小到大,因此不能发生自动转换
    		
    		//左边是int类型,右边是long类型,不一样
    		//long-->int,不是从小到大
    		//不能发生自动类型转换!
    		//格式:范围小的类型  范围小的变量名 = (范围小的类型) 原本范围大的数据;
    		int intnum2 = (int)100L; //大变小,用强制转换
    		System.out.println(intnum2);
    

    此处只是类型改变long->int,但数值100没变

    强制类型转换的注意事项

    注意事项:

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

    1.数据溢出的例子

    //测试数据溢出,long强制转换成int类型,大变小。(不是自动类型转换的小变大)
    //范围小的类型 范围小的变量名 =(范围小的类型) 原本范围大的数据;
    		int globalpeople = (int)6000000000L;//别忘了加L,否则报错:过大的整数,如下图
    		System.out.println(globalpeople);// 1705032704,大约是17亿
    

    在这里插入图片描述

    //2.精度损失的例子
    //double-->int ,应该不是小变大,所以要用强制类型转换
    		int numdouble = (int)3.99;
    		System.out.println(numdouble);//3 精度损失!,不是四舍五入!所有的小数位都会被舍弃掉
    

    2.byte/short/char 这三种类型都可以发生数学运算,例如加法“+”。

    3.byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。

    当byte result1 = byte + byte ;时,出现错误
    错误: 不兼容的类型: 从int转换到byte可能会有损失
    为什么?
    因为规则3【byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。】在这里插入图片描述

    /*例1*/	byte byte1 = 40 ; //注意!右侧数据大小,不能超过左侧的类型范围
    		byte byte2 = 50 ; 
    		// byte + byte --> int + int --> int
    		//错x byte result1 = byte1 + byte2 ;
    		int result1 = byte1 + byte2 ; //这样才对
    		System.out.println(result1); // 90
    	
    	/*规则三:byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型*/
    	
    /*例2*/ short short1 = 60 ; 
    		short short2 = 40 ;
    		//short + short --> int + int --> int 
    		//int强制转换为short:注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发生数据溢出
    		short result2 = (short)(short1 + short2);
    		System.out.println(result2);// 100
    

    4.boolean类型不能发生数据类型转换(true和false不能当作1和0对待)

    ASCII码表(数字和常见字符的对照关系)

    48代表‘’单引号里的字符0(注意不是数字0)

    记住48(0)、65(A)、97(a)

    在这里插入图片描述

    		System.out.println("-------ASCII码表48(0)、65(A)、97(a)--------");
    		
    		char zifu2 = '1'; //其实底层保存的是49数字
    		System.out.println(zifu2 + 0); // 49 <-- 49(有运算,char-->int) + 0
    		
    		char zifu3 = 'A'; //其实底层保存的是65数字
    		
    		char zifu4 = 'c';
    		int num41 = zifu4 ;
    		//char(16bit)-->int(32bit),确实是从小到大,所以发生了自动类型转换
    		System.out.println(num41);//99  //a是97,c则是99 
    

    char ASCII码表总共128个
    char有16位,可以表示比ASCII码表更多的内容

    /*
    数字和字符的对照关系表(编码表):
    小表ASCII码表:American Standard Code for Information Interchange,美国信息变换标准代码。
    大表Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。
    */

    48—>0
    65—>A
    97—>a

    char zifu5 ='中';//正确写法
    System.out.println(zifu4 + 0);// 20013
    
  • 相关阅读:
    C#中处理鼠标和键盘的事件
    C#中处理鼠标和键盘的事件
    C#中处理鼠标和键盘的事件
    mpich2安装
    算法题推箱子
    LINUX终端下windows盘的位置
    Linux头文件和库文件添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
    第九章顺序容器重学C++之《 C++ PRIMER》
    sed中使用变量
    抛出异常
  • 原文地址:https://www.cnblogs.com/guoxinyu/p/blackhorse4.html
Copyright © 2011-2022 走看看