【黑马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!!!\n"+
"dir可以看当前目录\n"+
"tree可以看当前的文件树\n"+
"cd打开文件\n"+
"cls清屏\n"+
"win+R 可以\n"+
"1、cmd开启命令提示符\n"+
"2、calc开启计算器\n");
//第三行是打印输出语句,即屏幕输出
Notepad++、注释、标识符、常量
记事本看不了行号,于是用增强版notepad++
安装无脑下一步。
1、首选项–新建
可以快速定位行号
注释
常量的代码展示
public static void main (String[] args){//第二行是万年不变的固定方法,代表main方法,程序的起点所在
System.out.println(
"HelloWorld!!!\n"+
"dir可以看当前目录\n"+
"tree可以看当前的文件树\n"+
"cd打开文件\n"+
"cls清屏\n"+
"win+R 可以\n"+
"1、cmd开启命令提示符\n"+
"2、calc开启计算器\n");
//第三行是打印输出语句,即屏幕输出
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
【黑马JavaSE】1.1JavaSE、环境变量、CMD使用、常量、变量、数据类型转换(自动/强制)、ASCII码表、Unicode万国码表的更多相关文章
- JavaSE学习(二):进制转换—数据类型转换—Java运算符
一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16) = 14*16(0) +7*16(1) + 10*16(2) + ...
- 编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。
- 12.编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。
注意:float虽然是4个自减,但是它的取值范围却比8个字节的long要大. float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal, ...
- 配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件
配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件 首先maven环境变量: 变量名:MAVEN_HOME 变量值:E:\apache-maven-3.2 ...
- java环境配置classpath和path变量的作用及设置方法
1.path:指定cmd中命令执行文件所在的路径.比如javac.java两个可执行文件在jdk的bin目录下,如果path值含有这个bin目录,在cmd下执行这两个命令的时候就会到path指定的目录 ...
- 跟我一起写Makefile--- 变量(嵌套变量+追加变量+overrid+多行变量+环境变量+目标变量+模式变量)
目录(?)[-] 使用变量 一变量的基础 二变量中的变量 三变量高级用法 四追加变量值 五override 指示符 六多行变量 七环境变量 八目标变量 九模式变量 使用变量 ———— 在Makefil ...
- JavaScript 执行环境(执行上下文) 变量对象 作用域链 上下文 块级作用域 私有变量和特权方法
总结自<高程三>第四章 理解Javascript_12_执行模型浅析 JS的执行环境与作用域 javascript高级程序第三版学习笔记[执行环境.作用域] 在javascript ...
- 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...
- javascript中函数的执行环境、作用域链、变量对象与活动对象
javascript高级程序设计中:对执行环境.作用域链.变量对象.活动对象的解释: 1.执行环境: 执行环境:有时也叫环境:是JavaScript中最为重要的一个概念:执行环境定义了变量或函数有权访 ...
随机推荐
- CSS选择器(通配符选择器、标签选择器、类选择器、id选择器、群组选择器、后代选择器、子元素选择器和相邻元素选择器)
通配符选择器 * 与任何元素匹配 派生选择器: 后代选择器(包含选择器):后代选择器可以选择作为元素后代的元素 A B 对A元素中的B元素应用样式 后代选择器中两个元素间的层次间隔可以是无 ...
- JQ报错:Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement报错
今天在写轮播图中,在停止定时器之后想要重新开启定时器,但是不知道为什么脑子抽了竟然想通过continue跳出定时器的本次运行继续下一次运行(当然是不可取的,但是还是试了试2333),然后就报错了.Un ...
- python调用其他脚本
1.用python调用python脚本 #!/usr/local/bin/python3. import time import os count = str = ('python b.py') re ...
- jvm监控工具jconsole进行远程监控配置
[环境] SUSE linux11 + jdk1.6 + tomcat7 [场景] 最近在做性能测试,想通过我本地(win7)上的jdk来远程监控上述服务器的jvm相关信息. [配置] 配置上述服务器 ...
- 6、SSH远程管理服务实战
1.SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务. 2.对传输 ...
- kettle Spoon.bat闪退解决办法
1.Java环境配置问题 java_home:D:\Program Files\Java\jdk1.7.0_25(安装jdk路径) classpath:.;%java_home%\lib\dt.jar ...
- 解决GitLab的Forbidden和Nginx启动失败
通过宝塔安装的GitLab突然出现Forbidden,原因居然是IP并发过大,IP被禁 解决方法: 登录服务器,编辑文件 /etc/gitlab/gitlab.rb ,将下面的截图内容放开注释(默认 ...
- Linux系统的grub和BIOS加密
启动流程: BIOS ——> MBR(主引导记录,找到系统在哪个分区) ——> boot loader(grub) ——>kernel(内核)——>进入启动级别init 硬盘的 ...
- linux基础—课堂随笔010_系统启动和内核管理
系统启动和内核管理 Linux: kernel+rootfs kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs:程序和glibc 库:函数集合, functio ...
- kotlin面向对象实战~
有了java的面向对象的基础,其实对于kotlin这块的东东比较好理解,所以这里以洗衣机洗衣服为例,对面向对象进行一下实战,下面开始. 洗衣机初步: 首先先新建一个洗衣机类: 然后里面先定义基本属性: ...