文章目录

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万国码表的更多相关文章

  1. JavaSE学习(二):进制转换—数据类型转换—Java运算符

    一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16)  =  14*16(0) +7*16(1) + 10*16(2)  + ...

  2. 编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。

  3. 12.编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。

    注意:float虽然是4个自减,但是它的取值范围却比8个字节的long要大. float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal, ...

  4. 配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件

    配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件 首先maven环境变量: 变量名:MAVEN_HOME 变量值:E:\apache-maven-3.2 ...

  5. java环境配置classpath和path变量的作用及设置方法

    1.path:指定cmd中命令执行文件所在的路径.比如javac.java两个可执行文件在jdk的bin目录下,如果path值含有这个bin目录,在cmd下执行这两个命令的时候就会到path指定的目录 ...

  6. 跟我一起写Makefile--- 变量(嵌套变量+追加变量+overrid+多行变量+环境变量+目标变量+模式变量)

    目录(?)[-] 使用变量 一变量的基础 二变量中的变量 三变量高级用法 四追加变量值 五override 指示符 六多行变量 七环境变量 八目标变量 九模式变量 使用变量 ———— 在Makefil ...

  7. JavaScript 执行环境(执行上下文) 变量对象 作用域链 上下文 块级作用域 私有变量和特权方法

    总结自<高程三>第四章  理解Javascript_12_执行模型浅析   JS的执行环境与作用域  javascript高级程序第三版学习笔记[执行环境.作用域] 在javascript ...

  8. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

    基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...

  9. javascript中函数的执行环境、作用域链、变量对象与活动对象

    javascript高级程序设计中:对执行环境.作用域链.变量对象.活动对象的解释: 1.执行环境: 执行环境:有时也叫环境:是JavaScript中最为重要的一个概念:执行环境定义了变量或函数有权访 ...

随机推荐

  1. 转:Git和Github简单教程

    转自:https://www.cnblogs.com/schaepher/p/5561193.html Git和Github简单教程   原文链接:Git和Github简单教程 网络上关于Git和Gi ...

  2. css and canvas实现圆形进度条

    进度条效果:   话不多说,上代码 使用css动画实现,看到一篇博客的启发,稍微修改了下, css实现的原理是用两个半圆一开始隐藏,再分别旋转180度,最后成为一个整圆 半圆效果,一开始右边的半圆在盒 ...

  3. mybatis报错,There is no getter for property named 'templateName' in 'class

    There is no getter for property named 'templateName' in 'class 主要原因是因为mapper.xml 的语句有错误,导致在bean里找不到相 ...

  4. 实现用一个QueryService支持多数据库访问

    上图,是在服务端定义多个数据库,准备在客户端通过“联接名称”及“客户端服务名称”访问这些数据库. 基于实现的MultiDBQueryService,将其注册为一个指定客户端服务名称的服务,如下图: 这 ...

  5. 小程序中使用components方法selectComponent遇到的坑 返回为null

    前言:哎呦气死了,小程序等着发布审核得时候 发现了一个bug,selectComponent获取不到组件了,返回值一直为null 原因居然是因为 wx:if  , 代码如下,无论if是true还是fa ...

  6. Kernel boot options

    There are three ways to pass options to the kernel and thus control its behavior: When building the ...

  7. Host服务

    这也是看网上的例子自己跟着配置做的一个小demo,这里记录一下. 一.创建一个空的控制台应用程序 二.安装所需dll 1.Quartz  Install-Package Quartz -Version ...

  8. php的加解密openssl_encrypt与openssl_decrypt

    https://blog.csdn.net/zhemejinnameyuanxc/article/details/83383434   php的加解密

  9. unittest 详解

      内容总括 一. 初始化 setUp 与 tearDown setUpClass 与 tearDownClass unittest.main(verbosity=0/1/2) 二. 执行顺序 按顺序 ...

  10. 返回的json数据中有属性为null的情况,报错 "message" : "Could not write JSON: Object is null