Java新手知识回顾02
一、第一个Java程序【Hello】扩展
1.详解代码
这一段代码的作用主要是方便介绍一些最最基本的内容而做的一些笔记,虽然已经熟练知道这一部分了,但是个人的目标是精通它,所以不得不反复回来进行咀嚼
/**
编写人:雍仲杨
编写时间:2021.7.20
*/
//公有的类叫做Hello(被public所修饰)
public class Hello{
//主方法
public static void main(String[] args){
//输出语句("内容"),主要目的是为了说明一下程序执行的过程顺序 即:由上到下;
System.out.println("HelloWorld...1");
System.out.println("HelloWorld...2");
System.out.println("HelloWorld...3");
}
}
/*
public-公有的 class-类 Hello-类名
static-静态的 void-无返回值的 main-方法名
String-字符串
String[]-字符串数组
*/
2.代码细节
- public修饰的类名必须和文件名一致
- Java是一门大小写敏感的语言(所以大小写不要乱用,尤其是以后的团队开发过程中)
- 括号、双引号都是成双成对的
- 方法里的代码都是从上往下执行 - 顺序执行
- 方法中的代码又叫做执行语句,执行语句用分号结束
二、Java编码规范
1.书写格式
如果是新手txt文本编写程序的时候(基本程序,而非高级程序)使用tab键让代码更有层次感,可读性增高,如果使用的是继承开发工具所写,这里可以忽视不管。
2.代码注释
这里注意,对任何开发人员而言注释的规范书写是十分重要的,也可以从另外一方面来看出是否够专业
含义:解释编写好的代码
注释 描述 //注释内容 单行注释 /* 注释内容 */ 多行注释 /** 注释内容 */ 文档注释 注意:.java文件编译成.class文件,编译过程会忽略注释
三、Path的作用
这里是对昨天的内容进行的一个小小的补充,其主要目的是为了,更加精细地解释一些东西,还是那句话,我的目的是精通Java,既然是精通那就不能放过任何一个细节问题
%JAVA_HOME%/bin --> javac.exe 和 java.exe
在path中配置了某个文件夹,代表在其他任何文件夹里都可以打开配置的文件夹中的文件
四、Java的跨平台特性
Java比较特殊,大致归类为解释型语言,该语言不属于传统的解释型语言也不属于传统的编译型语言,该语言将源代码通过编译器成编译成字节码文件(中间文件 .class 文件,用于让计算机知道的语言),字节码文件不能被系统直接执行,但是可以被安装在该平台上的Java虚拟机(JVM)进行解释执行。换言之,Java源码被编译成字节码文件,该字节码文件被各大平台上的Java虚拟机解释执行,实现了跨平台特性,但是跨平台的前提是平台上必须安装相匹配的Java虚拟机。
五、Java体系的划分
JavaSE - J2SE - 标准版本(引申出了企业版本和微型版本)
JavaEE - J2EE - 企业版本(针对后端开发的技术)
JavaME - J2ME - 微型版本(针对前端开发的技术-已过时,现在都用Android、鸿蒙)
六、Java的发展历史
雇主:sun(Stanford University Network)—2009年74亿美金卖给oracle公司
Java之父:詹姆斯·高斯林 (James Gosling)
版本变更
JAVA原名 OAK1995年5月23日,Java语言诞生;
1996年1月,第一个JDK-JDK1.0诞生;
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术;
1996年9月,约8.3万个网页应用了JAVA技术来制作;
1997年2月18日,JDK1.1发布;
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录;
1997年9月,JavaDeveloperConnection社区成员超过十万;
1998年2月,JDK1.1被下载超过2,000,000次;
1998年12月8日,JAVA2企业平台J2EE发布;
1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版;
2000年5月8日,JDK1.3发布;
2000年5月29日,JDK1.4发布;
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机;
2001年9月24日,J2EE1.3发布;
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升;
2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本 的重要性,J2SE1.5更名为Java SE 5.0;
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取 消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME;
2006年12月,SUN公司发布JRE6.0;
2009年4月7日Google App Engine开始支持Java;
2009年04月20日,甲骨文74亿美元收购Sun。取得Java的版权;
2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP;
2011年7月28日,甲骨文发布Java 7.0的正式版;
2014年3月19日,甲骨文公司发布Java 8.0的正式版
七、什么是IDE
含义:编码环境,编写代码的软件
记事本 --> notepad++/EditPlus --> eclipse --> IDEA
八、编码问题
乱码出现的原因:编码和解码不是使用的同一编码格式
解决方案:两个端口设置一样的编码格式
ps:在cmd黑窗口中编译项目时 javac -encoding UTF-8 Hello.java
ps:使用各种集成开发工具的时候都有对应的设置编码的选项,自己探索,不懂找百度。
九、标识符
含义:给类、方法、变量、接口取名字时使用到的字符序列
组成部分:英文大小写字母、 数字 、 $ 、 _ 、 中文
命名规范:
- 不能以数字开头
- 区分大小写字母
- 不能使用除了$和_以外的特殊符号
- 不要使用中文(企业级的命名规范不允许使用中文)
- 不能使用Java的关键字(例如 :class 、 int、等常用具有一定功能的关键词)
public class 标识符{
public static void 标识符(String[] args){
}
}
十、关键字
含义:java提前给我们定义的具有特殊意义的单词(如 :int 、class、public、static、String 、、、、、、)
经验:不用记,随着后面知识点的深入,我们会逐一掌握(如果使用的是开发工具的话,一班关键字的颜色会与其他的代码不一样,颜色会更深一些)
十一、变量
含义:在程序执行过程中,可改变的量,可以看成是一个装东西的器具,例如:瓶子、碗、盆之内的东西
语法:数据类型 变量名 【=值】;
注意:以上语法中 ,中括号中的内容可以不用写,不违反变量的语法原则,但是在一定情况下需要对数字型变量进行初始化。其次,“ = ”为赋值号,将赋值号右边的值赋值给左边的变量,变量类似容器,但是变量只能存单个值(要想存多个值,可以考虑使用数组和集合(目前可能小白类新手可能不会用,以后我会慢慢讲的) )
十二、变量使用时要注意的事项
1、在同一个作用域中,变量名不能重复,即 :你如果已经定义了一个 int 类型的 age 变量 (即 int age=一个整数) 就不能再这个作用域之中再来定义一个 int age ,除非你换一个变量名。
2、变量的话必须初始化才能使用,不然会报错, 例如: int age=10; 然后你才能访问这个变量。
十三、基本的数据类型:
数据类型分为两大类,分别为基本数据类型与引用数据类型,但是这里我们就先详细介绍一下基本数据类型,具体看下面的思维导图
解释:以上图片中可以看出基本数据类型中分为三大类:数值类型、字符类型、布尔类型,其中数值类型又分为整数类型与浮点类型然后根据所占空间大小的不同又分为不同的类型
1、数字字面量:代码中出现的数字
整数数字默认int类型
小数数字默认double类型
2、char类型使用单引号括起来
3、boolean 类型的值只能是 true 或 false
4、一个字节占二进制的8位
5、byte 的取值范围:-128 ~ 127
6、int的取值范围:-21亿…~21亿…
7、char的取值范围:0~65535
8、boolean是占4个字节
底层使用int值去表示,1-true,0-false
9、数值型的取值范围大小比较:
byte<short<int<long<float<double
十四、基本数据类型的转换
注意:数值类型的转换
数值类型的取值范围:
byte <short<int<long<float<double
1、自动转型 含义:由小类型的数值类型可以直接转换成大的数值类型转换原则如下:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double;
2、强制转型 使用规则: 原数据类型 变量a=(需要强转的数据类型) 变量a;
double d = 123.12;
float f = (float)d;//将double类型的变量d强转成float类型,再赋值给float类型的变量f
long l = (long)f;
int i = (int)l;
short s = (short)i;
byte b = (byte)s;
//直接将double转成byte
double d = 50.12;
byte b = (byte)d;
(补充)基本数据类型
整性 byte , short , int , long 涉及取值范围计算
byte 1字节 8bit -27 ~ 27-1 -128 ~ 127
short 2字节 16bit -215 ~ 215-1 -32768 ~ 32767
int 3字节 32bit -231 ~ 231-1 -2147483648 ~ 2147483647 (21亿)
long 1字节 64bit -263 ~ 263-1 -9223372036854775808 ~ 9223372036854775807
浮点型 float , double 涉及精度计算
字符型 char 涉及符合表示
布尔型 boolean true false
引用数据类型
数组 , 类 ,接口
十五、拓展部分,近年来的高频面试题:
(1)、增加知识部分
数字字面量:代码中的数字 , 例如: short a=10; 中 数字 “ 10 ”就是一个数字字面量
重点:
(1)、数字为整数时数字字面量默认类型为:int , 例如在上一个案例中 short a=10;中,数字“10”被默认为 int 类型
(2)、数字为小数时数字字面量默认类型为:double ,例如 float f1 = 1; 数字“1”会默认为双精度 double 类型
(2)、面试题
案例一、
byte b1=1;
byte b2=128;
System.out.println(b1);//不会报错,“1”位int类型的数字字面量,但是1在byte类型的取值范围内,所以直接赋值不会报错,
System.out.println(b2); //若直接访问,会报错,原因:128位int类型的数字字面量,但是128不在byte类型的取值范围内,所以必须强转过后才能使用,即执行打印之前必须要有 byte b2 = (byte)128其打印结果为 -128
案例二、
//12345678901为int类型的数字字面量,但是该数字超过了int类型的最大取值范围,所以报错
long l1 = 12345678901;
System.out.println(l1);//12345678901为int类型的数字字面量,但是该数字超过了int类型的最大取值范围,所以报错
int i = 12345678901;
//12345678901L为long类型的数字字面量,该数字没有超过了long类型的最大取值范围,所以不报错
long l2 = 12345678901L;
案例三、
//int转float(自动转型)
float f1 = 1;
//double转float(强制转换)
//float f2 = 1.0;
float f2 = 1.0F;//直接将1.0认为是float类型,效率更高
float f2 = (float)1.0;//把double的1.0强转为float
System.out.println(f1);
System.out.println(f2);
案例四、
char c = ‘a’;
//将字符’a’的ASCII赋值给变量i
int i = c;
System.out.println(i);//97 - ASCII
解释:以上案例四主要结果是来自于 ASCLL码表,对应的表中 a 为数字97 所以便有了这个结果。
十六、总结
今天主要是将有关变量中的一些基本重要内容梳理了一遍,其中在最后通过面试题的方式献上一个解题思路,希望能给大家带来一些收获