文章目录
- Demo01-Java概述、IDEA、Java基础语法
- 1.安装jdk
- 2.命令行窗口的一些常用命令
- 3.java入门程序:HelloWorld
- 4.java程序的执行原理
- 5. JDK组成,跨平台原理
- 5.1JDK组成及程序运行过程
- 5.2跨平台原理
- 6.PATH和JAVA_HOME环境变量
- 7.集成开发工具
- 8.注释
- 9.字面量
- 10.变量
- 10.1变量使用时的注意事项
- 10.2变量原理,ACSII,二进制
- 11.基本数据类型
Demo01-Java概述、IDEA、Java基础语法
1.安装jdk
怎么验证jdk是否安装成功了(需配置环境变量,具体看):
需要看bin目录下的java.exe和javac.exe能否运行
- javac.exe是编译工具,用于将写好的java源代码文件(后缀是.java)编译为计算机能识别的字节码文件(后缀是.class)我们写好的java程序都是高级语言,是人能看懂的,计算机看不懂
- java.exe是执行工具,执行编译后的代码
注意,java.exe和javac.exe是命令行程序而不是图形界面化程序所以,如果直接双击打开会一闪而过,那么运行该程序就需要用到命令行窗口,在命令行分别输入java -version和javac -version验证安装是否成功并检查安装版本是否正确
2.命令行窗口的一些常用命令
常用命令 | 作用 |
盘符 | 切换到某个盘符下: D: |
dir | 查看当前路径下的文件信息 |
cd | 进入单级目录: cd study 进入多级目录: cd D:\study\java\code\javaSE 回退到上一级目录: cd … 回退到盘符根目录: cd \ |
cls | 清屏 |
技巧:如果我想进入D盘下的study文件夹,我可以在D盘下cd st然后按table就会自动补全study,如果没有补全:在命令行窗口上边的白色区域右键->属性->勾选"快速编辑模式"
3.java入门程序:HelloWorld
1.创建HelloWorld.java文件并编写源代码
public class HelloWorld {//注意这里的类名要和文件名一致,都是HelloWorld
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2.在命令行编译该源文件
- 打开命令行窗口后先切换到源文件的父目录下
- 在命令行窗口中输入javac HelloWorld.java
1.这里输入时注意要带上文件后缀.java
2.可以输入javac Hel后按table自动补全
3.编译后得到的字节码文件默认与HelloWorld.java在同级目录下
3.运行字节码文件
- java HelloWorld
此时不能加后缀.class否则会报错
JDK11开始支持java直接运行源代码文件(只是我们看不到,实际上底层还是先编译得到一个临时class文件再执行该class文件这里的class文件是临时存在的,我们在.java的同级目录下看不到)
4.java程序的执行原理
计算机底层是硬件电路,是通过通电和不通电来控制电路运转,通电是1,不通电是0,所以机器语言是由0和1组成的
编译语言发展历程:机器语言->汇编语言->高级语言
java是一门高级编程语言,使用接近人类自己的语言书写,翻译器再将其翻译成计算机能理解的机器指令
5. JDK组成,跨平台原理
5.1JDK组成及程序运行过程
- jvm:java虚拟机,真正运行java程序的地方
- 核心类库:java自己写好的程序,用来给程序员自己的程序调用
- jre:由jvm和核心类库组成,是java的运行环境
- 开发工具:java.exe,javac.exe…
- jdk:由jre和开发工具组成
一个java程序运行的全过程:
1.javac.exe将源代码进行编译
2.java.exe将编译后的字节码文件送到jvm运行
3.程序在jvm运行时还需要调用java自己写好的程序,也就是需要用到核心类库
5.2跨平台原理
Sun公司为不同平台提供了不同的jvm虚拟机,所以程序只需要安装一次就可以了,想在不同平台运行就安装对应的虚拟机就可以了
6.PATH和JAVA_HOME环境变量
Path环境变量:用于记住程序路径,方便在命令行窗口的任意目录启动程序
JAVA_HOME:告诉操作系统JDK安装在了哪个位置(将来其他技术要通过这个环境变量找jdk)
针对我自己的电脑我的JAVA_HOME和Path如下:
- JAVA_HOME:E:\java\jdk\jdk\jdk1.8.0_121
- Path:%JAVA_HOME%\bin
1.较新版本的jdk在安装时会自动配置javac和java的路径到Path环境变量中去,因此javac和java可以直接使用
2.较新版本的jdk只是自动配置了Path,没有自动配置JAVA_HOME
7.集成开发工具
集成开发环境(IDE,Integrated Development Environment):
- 把代码编写,编译,执行等多种功能综合到一起的开发工具,可以进行代码智能提示,错误提醒,项目管理等等
- 常见java的IDE工具有:Eclipse,MyEclipse,IntelliJ IDEA,Jbuilder,NetBeans等
8.注释
注释不影响程序的执行,编译后的class文件中已经没有注释了
9.字面量
public class LiteralDemo {
public static void main(String[] args) {
// 1、整数、小数
System.out.println(666);
System.out.println(3.14);
// 2、字符:加单引号,有且仅能有一个字符
System.out.println('中');
System.out.println(' ');
//System.out.println('中国'); // 报错的
//System.out.println(''); // 报错的
// 注意:几个特殊字符
System.out.println('\n'); // \n代表换行
System.out.println('\t'); // \t代表一个tab
// 3、字符串:加双引号,里面的内容可以随便写
System.out.println("");
System.out.println(" ");
System.out.println("我爱您中国 abc 1234324 ");
// 4、布尔值:true , false
System.out.println(true);
System.out.println(false);
//5.空值:null
}
}
10.变量
10.1变量使用时的注意事项
- 变量的有效范围是从定义开始到"}"截止,且在同一个范围内不能定义2个同名的变量
- 变量定义的时候可以没有初始值,但是在使用的时候必须给初始值
10.2变量原理,ACSII,二进制
1.数字都是转换为二进制再存储在计算机中,使用0和1,按照逢二进一的规则来表示数据的存储(在我们手动计算时逢二进一太麻烦了,所以用除二取余法)
十进制转二进制:除二取余法
2.针对13,计算机存储时并不是直接存储这个1101,计算机在存储数据时以8位为一组存储数据,所以13在计算机存储时就是00001101
- 计算机最小的组成单元是:使用八个二进制位为一组来保存数据,我们称之为一个字节(byte,简称B)
- 其中的每个二进制位称为一位(bit,简称b),所以1byte=8bit,简写为1B=8b
3.字符存储计算机时先根据ACSII转换为对应的数字,再将该数字存储到计算机中.
System.out.println('a'+1);//输出98
System.out.println('a');//输出a
第一个输出98:计算机先从存储的数据中获取到97,然后进行运算得到98并展示出来
第二个输出a而不是97:计算机先从存储的数据中获取到97,然后发现这是一个字符而且并没有进行其他的运算而是直接输出,所以计算机就将97转换为字符形式展示出来
4.计算机存储图片:
- 图片就是无数个像素点组成的
- 每个像素点的数据:用0~255*255*255表示其颜色
5.八进制和十六进制
使用二进制的话,一串0和1太长了,不易表示,使用十进制的话,不能一眼看出来这个数据转换为二进制对应的什么,不易观察,所以为了方便观察和表示二进制,推出了八进制和十六进制
每3位二进制作为一个单元,最小数是0,最大数7,共8个数字,这就是八进制:
- 97转为二进制:01100001
- 将这个二进制分组:从右到左:001和100和001(01不足三位左补0结果是001)
- 001对应1,100对应4,001对应1,所以八进制就是141
- 再由八进制转为二进制:从右到左:1对应001,4对应100,1对应001,结果是001 100 001
- 去掉最左边的0就是最终结果01100001
二进制,十六进制的互相转换和二进制,八进制类似,区别就是把3位一组改为4位一组
java程序中支持书写二进制,八进制,十六进制的数据,分别需要以0B或者0b,0,0X或者0x开头
System.out.println(0b01100001);
System.out.println(0141);
System.out.println(0x61);
这三个输出的都是97
1B=8b
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
11.基本数据类型
数据类型 | 关键字 | 取值范围 | 内存占用(字节数) |
整数 | byte short int(默认) long | -128~127 -32768~32767 -2147483648~2147483647(10位数) -9223372036854775808~9223372036854775807(19位 | 1 2 4 8 |
浮点数 | float double(默认) | 1.401298e-45到3.402823e+38 4.9000000e-324到1.797693e+308 | 4 8 |
字符 | char | 0~65535 | 2 |
布尔 | boolean | true,false | 1 |
byte number = 128;//报错
long l1 = 34243243243245;//报错
long l2 = 34243243243245L;//正确
float f1 = 3.14;//报错
float f2 = 3.14F;//正确
1.long l1 = 34243243243245;报错原因:随便写一个字面量34243243243245默认是当成int类型的,34243243243245虽然没有超过long的范围,但是34243243243245它超过了int本身的范围,如果希望34243243243245这个数据是long类型的,需要在后面加L或l
2.float f1 = 3.14;报错原因:随便写一个小数字面量默认是double类型的,如果希望随便写一个小数默认是float类型的需要加上F或f