文章目录
一、Hello的拓展
1、代码详解
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[]-字符串数组 args-字符串名
public static void main(String[] args){}
概念:这样写的方法叫做主方法/主函数/入口方法/入口函数
作用:程序运行,系统会找到该类的主方法,运行主方法内的执行语句
2、代码细节
1.public修饰的类名必须与文件名一致
2.Java是一门大小写敏感的语言
3.括号都是成双成对的
4.方法里的代码都是从上往下执行-顺序执行
5.方法中的代码又叫做执行语句,执行语句用分号结束
二、编码规范
1、书写格式
使用tab键让代码具有层次感
目的:提高代码的可读性
2、代码注释
含义:描述代码
注释 描述
//注释内容 单行注释
/注释内容/ 多行注释
/* 注释内容/ 文档注释
编译过程:xxx.java --> xxx.class
反编译的过程:xxx.class -->xxx.java day2工具里的XJad
注意:解释不被编译到.class文件
三、Java跨平台特性
平台就是指我们计算机的操作系统,例如:Windows、Linux、Mac等操作系统。跨平台的意思就是Java程序,在一次编译后,在这些平台上都可以运行。
java的跨平台不是指java语言本身具有跨平台特性,而是不同平台上都有可以让java运行的环境,这个运行环境就是JRE。JRE由JVM和其目录下类库组成,JVM 是 Java 平台的基础,是整个java实现跨平台的最核心的部分,所有的.java源文件程序首先会编译成.class类文件字节码,字节码不能直接与操作系统交互,在运行时JVM通过类加载器加载字节码,以解释或者编译的方式将字节码转换成目标机器码交给本地系统去执行,从而屏蔽了操作系统和硬件的细节,也就实现了“一次编译到处运行“的效果。
JRE组成:
不同JVE依赖于不同的平台 JDK版本不同 对应的JVM底层也不同
四、Java体系划分
JavaSE-J2SE-核心版本
JavaEE-J2EE-企业版本(做服务器)
JavaME-J2ME-微型版本(做移动端)基本上被淘汰
区别与联系可参考:javaEE, javaSE, javaME的区分与联系_Vengo€bs的博客-CSDN博客
五、Java发展史
雇主:sun(Stanford University Network)---2009年74亿美金卖给oracle公司
Java之父:詹姆斯·高斯林 (James Gosling)
版本变更
1995年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(Android安卓)开始支持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
含义:
IDE:集成开发环境(Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件。
目前Java的最流行的IDE工具有Eclipse,IDEA
详情可参考:2022Java的最流行的IDE工具_Vengo€bs的博客-CSDN博客
七、编码问题
主要解释使用notepad++ 和idea在控制台编译运行 出现乱码问题
通过idea编写代码
public class homeWork1 {
public static void main(String[] args){
System.out.println("java欢迎您!");
}
}
cmd 命令编译运行
结果:出现乱码
原因:两端编译格式不一致造成
NotePad++ | CMD、命令行、黑窗口、控制台 | |
UTF-8 | GBK | |
一个英文: | 占1个字节 | 占1个字节 |
一个数字 | 占1个字节 | 占1个字节 |
一个符号 | 占1个字节 | 占1个字节 |
一个中文 | 占3个字节 | 占2个字节 |
解决方法:
解决方案1:将控制台编码格式设置为UTF-8
javac -encoding=UTF-8 Test01.java
理解:以UTF-8的编码格式来编译Test01.java
不推荐
解决方案2:将NotePad++编码格式设置为GBK
NodePad++中 设置-->首选项-->新建-->ANSI
注意:设置好了以后,把之前的Test01.java删掉再新建
Idea的大多数设置,都是在File里面的Settings Editor-->File Encodings-->设置所需,并且点击apply,然后点击OK
注意:Idea里面,在我上面设置完毕之后,重新打开一个窗口,它原来的默认还是原来的
补充:
动/静态语言、强/弱类型语言、编译型/解释形语言的区别
动态类型语言和静态类型语言的区别
-
动态语言/动态类型语言
理解:在编程时不会给变量定义类型,运行期间才会做数据类型的检查,语言会在该变量第一次赋值时判断该值的类型,并将数据类型记录下来。python就是典型的动态类型语言。
-
静态语言/静态类型语言
理解:与动态类型语言恰好相反,在编程中定义变量时就要声明该变量的数据类型,在编译期间检查。C、C++、Java就是典型的静态类型语言。
强类型语言和弱类型语言的区别
-
强类型语言/强制数据类型定义语言
理解:变量定义了数据类型后,如果不经过强转,数据就不能转换为别的数据类型,此语言是数据
安全的语言。C、C++、Java就是强类型语言
-
弱类型语言
理解:变量可赋不同类型的语言,也就是说此语言常常会隐式转换数据,JavaScript就是弱类型语言
-
注意:
-
强弱类型语言并没有非常明确的定义
-
因为强类型语言需要对每个变量类型做判断,所以强类型语言在速度上要比弱类型略逊一筹,换言之强类型语言带来的严谨性能够避免在变量类型及赋值上的许多错误。
-
编译型语言和解释型语言的区别
-
前言:计算机不能直接识别高级语言,所有的高级语言都必须翻译成机器语言(二进制机器指令)
-
编译型语言
理解:把语言翻译成机器指令,这个过程只执行一次,所以编译型语言执行效率高,但是不同的平台(系统)的机器指令是不同的,所以编译型语言跨平台性能较差。C、C++就是编译型语言。
-
解释型语言
理解:该语言运行时才逐行翻译成机器指令,而且每运行一次就要翻译一次,所以效率较低。JavaScript就是解释形语言。
-
扩展
Java比较特殊,大致归类为解释型语言,该语言不属于传统的解释型语言也不属于传统的编译型语言,该语言将源代码通过编译器成编译成字节码文件(中间文件/class文件),字节码文件不能被系统直接执行,但是可以被安装在该平台上的Java虚拟机(VM)进行解释执行。换言之,Java源码被编译成字节码文件,该字节码文件被各大平台上的Java虚拟机解释执行,实现了跨平台特性,但是跨平台的前提是平台上必须安装相匹配的Java虚拟机。
总结
未完待续.....