java入门
Java历史(了解)
1.诞生 SUN(stanford university network),大概于1996年发行正式的第一版,2009年SUN被Oracle甲骨文)收购.
2. java之父:詹姆斯.高斯林
3.目前学习(开发)的版本为Java 8,最新版本:Java 12,Java分为三大方向:Java SE,Java ME,Java EE,Java 9尝试把Java SE,Java ME,Java EE合起来,用模块的方式进行区分。
Java特点(了解)
1.跨平台
2.面向对象
3.健壮性
Java语言运行机制:跨平台
1. 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。"Write once,Run anywhere"一次编写,处处运行。
原理:Java程序不是直接运行在操作系统上,而是运行在JVM(Java virtual machine),而不同的操作系统平台需要==安装不同的的JVM。这个虚拟机只要下载安装就可以,程序员不用管,程序员只需要关注自己的Java程序就可以了。
Java程序的==开发和运行==的步骤
1.编写Java代码,保存的代码的文件:.java
2.编译Java代码为字节码,字节码文件**.class**
为什么编译为字节码文件?
因为JVM只认识字节码文件,不认识Java代码
3.运行字节码
把字节码转成CPU能执行的机器指令
开发环境搭建
1.JVM,JDK和JVM
①
JDK:Java Developer’s Kit Java开发工具包
JDK = JRE + 开发工具集(javac.exe,java.exe,javadoc.exe等)
JRE:Java Runtine Environment Java运行环境
JRE = JVM + 核心类库(提前写好的代码,比如lang包,Util包等)
JVM:Java Virtual Machine Java虚拟机
运行Java程序需要用到JVM
②如果仅仅运行 Java程序,只需要装JRE就可以,不需要装JDK,如果要 开发 Java程序,那必须安装JDK
2.下载与安装
网址:www.oracle.com
注意:下载时注意是什么平台,例:Windows的64位
安装:傻瓜式安装
提醒:
①以后我们作为开发人员,安装软件时,要避免中文目录。
②每一个软件建立自己的目录。
3.卸载
①控制面板
②通过"360"或"电脑管家"进行卸载
环境变量的设置
1.为什么要配置环境变量?
希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。
(详情见收藏)
2.查找环境变量
3.
用户环境变量:只针对当前用户(操作系统登陆的用户)
系统环境变量:针对所有用户
4.path -----> C:\Program Files\Java\jdk-11.0.2\bin;
英文状态/半角输入
5.如何识别环境变量配置的是哪个版本?(多个版本JDK的情况)
在cmd中输入"java -version"
第一个Java应用程序
1.注释:写一下解释的文字,给程序员看
三种形式:
(1)单行注释 //注释内容
(2)多行注释 /* 注释内容 */
(3)文档注释
2.Java的代码结构
class:类、声明类、定义类
类{
方法/函数{
语句;
}
}
3.代码
class HelloWorld{
/*
Java程序的主方法,是Java程序运行的入口
*/
public static void main(String[] args){
/* 输出语句:""中的内容,表示需要鸳鸯输出的内容*/
System.out.println("Hello Java!");
}
}
4.Java程序的开发步骤:
(1)编写代码
要求:保存为 .java 的源代码文件
(2)编译代码
目的:把 .java 源文件编译为 .class 的字节码文件(因为JVM只认识字节码文件)
编译工具:javac.exe
如何使用编译工具?
格式:javac 源文件名.java
例如:javac HelloWorld.java 或 javac helloworld.java (也可以编译出来,但不建议)
(3)运行字节码文件
运行工具:java.exe
如何使用运行工具?
格式:java 字节码文件名或说是类名
例如:java HelloWorld (若写为:java helloworld 则报错)
要求:可以运行的类,必须含有main方法
5.运行命令行:
d:
cd atguigu… >cd day01_code >javac HelloWorld.java >java HelloWorld
6.保存键:ctrl+s
问题一:乱码问题
1.原因
计算机的世界只有0和1,人类世界中字符社会丰富的。最早人类使用计算机时,硬件机器语言如0000111001110,后来为了使用计算机的人方便,开始引用助记符等,可以表示更丰富的字符等信息。
ASCⅡ码:数字十进制的65表示字符A,计算机底层把十进制65再转为二进制1000001。最早ASKⅡ码只能表示128个字符。后来计算机不仅仅在美国了,流传到其他国家,每个国家在ASCⅡ码基础上扩展了128个字符,完成256个,但是后面的128个不具有通用性。
甚至计算机传入亚洲,就开始出现了多字节编码。例如:中国GB2312,后来的GBK,台湾等地区big5等。越来越多的字符编码出现,但是各国之间的文档交流出现问题。
计算机希望在全世界范围内能够无障碍的交流,开始引入万国码,Unicode编码表,这个编码表可以用它的规则表示全世界所有的字符。每个字符都有自己唯一的编码。
Unicode编码表只说了字符用什么数字表示,但是这个数字范围跨度很大。有一个字节的,两个字节的,三个字节的,四个字节等,在网络传输中出现问题。例如,我收到四个字节的数据时,该表示为四个字符呢,还是一个字符呢?后面为了解决传输问题,出现了UTF–8等编码方式,规定了到底几个字节是一个字符。
不同的编码方式对同一组数据解析出来是不同的。
2.如何解决
(1)统一编码(操作系统的字符编码和源文件的字符编码)
①修改当前源文件的字符编码(notepad++),让他与操作系统的字符编码一致。
操作步骤:
[编码]菜单→转为ANSI(与当前操作系统一致)编码。
如果希望之后建立的源文件,都是ANSI编码一致的,那么可以这样做:
操作步骤:
[设置]菜单→[首选项]→[新建]→[ANSI]编码
②如果源文件的字符编码不可变时,在使用Javac命令式,可以指定源文件的字符编码。
操作步骤:
假设源文件的字符编码为utf-8
javac -encoding utf-8 Review01.java
3.错误:
cmd:当前代码页:GBK
源文件字符编码:UTF-8
导致:
(1)
(2)
或者显示:编码GBK的不可映射字符(0×99)
问题2:大小写问题
1.源文件名.java的大小写问题
源文件名不区分大小写,但是强烈建议注意大小写
例如:javac Problem1.java √
javac problem1.java √
2.字节码文件名(类名)的大小写问题
严格区分大小写
例如:java Problem1 √
java problem1 ×
3.代码中的大小写问题
严格区分大小写
例如: public static void main(String[] args){ √
public static void main(string[] args){ ×
问题3:格式问题
1.{}问题
风格1(推荐)
class 类名{
方法名{
System.out.println();
}
}
从右边往左边看,结尾要么是{ 、} ,要么是;
2.缩进问题
class 类名{
tab键public static void main(String[] args){
tab键tab键System.out.println(“xxxxxx”);
tab键}
}
例如:
class Problem2{
public static void main(String[] args){
System.out.println("xxxxx");
for(int i = 0;i<5;i++){
System.out.println("xxxxxx");
}
}
}
格式:①每一级缩进一个tab键
②{在行尾,"}“与和它成对的”{"的行首对齐
问题4.源文件名和类名的问题
1.源文件名和类名一致
javac 源文件名.java
java 类名
例如:
javac Problem4.java
java Problem4
2.源文件名和类名不一致
例如:
class Problem4{
public static void main(String[] args){
System.out.println("源文件名和类名一致");
}
class Other{
public static void main(String[] args){
System.out.println("源文件中有另一个类");
}
如果要运行Other要怎么做:
javac Problem4.java
java Other
3.在cmd命令行中,如何重新运行之前执行过的命令?
按↑,查找之前的命令
按↓,查找某个之后的命令
4.一个源文件可以编写多个类吗?如果可以,编译后会怎样?
可以,如果一个源文件有多个类,那么编译后,会产生多个.class的字节码文件,字节码文件就是类名
注意:
平时开发中,一个Java文件只写一个类,除非有内部类
而且源文件名和类名一致,后期好维护(好维护的意思是好修改,类名和源文件名一致,直接找到与类名一致的源文件名修改)
5.main方法必须在public类中吗?
不是,但是后面写代码时,基本上main方法习惯上都在public类中
练习1:打印个人信息
1.数据类型
“柴林燕” -->字符串
18–>整数,整型
‘女’–>字符,单个字符
true–>布尔值,逻辑值,它只有两种情况,true和false
40.5–>小数类型
2.常量
字符串的常量必须用""(双引号)
单字符的常量,必须用’’(单引号)
其他整数、小数、布尔等不需要加符号。
System.out.println(xx); 输出xx之后换行,ln==line
System.out.print(xx);输出xx之后不换行,下面的输出内容就会接着输出
*/
class TestExer1{
public static void main(String[] args){
System.out.println("柴林燕");
System.out.println(18);
System.out.println('女');
System.out.println(true);
System.out.println(40.5);
System.out.println("--------------------------------");
System.out.print("姓名:");
System.out.print("柴林燕");
}
}