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
    
  • 相关阅读:
    【Azure 应用服务】在Azure App Service多实例的情况下,如何在应用中通过代码获取到实例名(Instance ID)呢?
    【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
    【Azure Developer】使用Azure Key Vault 的Key签名后,离线验证的一些参考资料
    【Azure Function】调试 VS Code Javascript Function本地不能运行,报错 Value cannot be null. (Parameter 'provider')问题
    【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(Xms512m Xmx1204m)?
    【Azure API 管理】APIM添加Logtoeventhub的策略后,一些相关APIM与Event Hub的问题
    【Azure API 管理】为调用APIM的请求启用Trace 调试APIM Policy的利器
    【Azure 事件中心】China Azure上是否有Kafka服务简答
    【Azure 应用服务】探索在Azure上设置禁止任何人访问App Service的默认域名(Default URL)
    【Azure 微服务】记一次错误的更新Service Fabric 证书而引发的集群崩溃而只能重建
  • 原文地址:https://www.cnblogs.com/guoxinyu/p/blackhorse4.html
Copyright © 2011-2022 走看看