目录
工程
编写源文件-->经过编译生成字节码文件.class-->jvm翻译成机器语言
1、编写java源文件--> HelloWorld.java
2、经过编译--> HelloWorld.class的字节码文件
3、 用main方法进行运行--> 产生对应的结果
JDK、JRE、JVM 之间的关系
JDK
Java Development Kit 是用于开发 Java 应用程序的软件开发工具,包括了 Java 运行时的环境(JRE)、解释器(Java)、编译器(javac)、Java 归档(jar ——一种软件包文件格式)、文档生成器(Javadoc)等工具。
JRE
Java Runtime Enviroment 提供 Java 应用程序执行时所需的环境,由 Java 虚拟机(JVM)、核心类、支持文件组成。
JVM
Java Virtual Machine(Java 虚拟机)有三层含义,分别是:
- JVM规范要求
- 满足 JVM 规范要求的一种具体实现(一种计算机程序)
- 一个 JVM 运行实例,在命令提示符下编写 Java 命令以运行 Java 类时,都会创建一个 JVM 实例。
关系
JDK = JRE + 开发工具
JRE = JVM + 类库
驼峰命名法
以英文单词组成,多个英文单词,要用首字母大写来标记单词开头
变量名:英文字母、数字、下划线 及 美元符、人民币符等构成(字下美人数)
例:schoolName
忌:不可以数字开头
不能用空格
不能使用关键字,如public、class
注释
1、单行注释://
快速多个单行注释快捷键:Ctrl+/
//单行注释:往往用于变量或者某个步骤的注释
2、多行注释:/* */
快速多行注释快捷键:Ctrl+shift+/
/*
多行注释:用于单行注释的补充
( )代表方法,前面是方法名,内部是参数
一个程序只有一个main方法
*/
3、文档注释:/** */
Javadoc 是 Sun 公司提供的一种工具,它可以从程序源代码中抽取类、方法、成员等注释,然后形成一个和源代码配套的 API 帮助文档。
文档注释只放在类、接口、成员变量、方法之前,因为 Javadoc 只处理这些地方的文档注释,而忽略其它地方的文档注释。
/**
* javaDoc注释:往往用于类、方法的注释
*/
变量类型
基本数据类型(变量里存储的是真实的数据)
数值型
整型:byte(字节型,8位):-128~127,无符号类型(0~255)
short(短整型,16位):-32768~32767
* int(整型,32位):-2^31~2^32-1
long(长整形,64位)
long lo=123L;
浮点型:
float(单精度浮点型)
float f=1.0f;
* double(双精度浮点型)
非数值型
字节型:char(几个重要ASCII码值——0:48,A:65,a:97)
ps:字符集:UTF-8(国际通用)、GBK(汉字编码,简体中文通用)
布尔型:boolean(判断真假:true、false)
引用数据类型(除基本数据类型外都是引用数据类型,存储的不是真实的数据,而是其地址值)
String(字符串)、List(列表,集合类型)、对象类型、数组类型
注意: char字符:单引号,String字符串:双引号
常量
关键字:final。常量名通常大写,单词之间用下划线分隔
final+变量,即常量,常量不可再被赋值
final float PI=3.14f
final+类,该类不可被继承
final+方法,该方法不可被重写
从键盘输入值
1、导入Scanner类
import java.util.Scanner;
2、创建Scanner对象
Scanner input=new Scanner(System.in);//引入控制台输入
3、获取键盘输入的数据
String s=input.next();//输入字符串
int a=input.nextInt();//输入的字符转化为int型
float f=input.nextFloat(); //输入的字符转化成float型
double d=input.nextDouble();//输入的字符转化为double型
boolean b=input.nextBoolean();//输入的字符转化成boolean型
数据类型转换
大类型接收小类型,默认转型为大类型
小类型接收大类型 , 需要强制转换,但可能会丢失精度
运行结果:
运算符
1、赋值运算符( = ):从右往左进行运算
2、算数运算符(用于数值型的运算 ):从左往右,先乘除后加减
+、- 、* 、/ 、% (取余)、++ (自增)、-- (自减)
+= 、-= 、*= 、/=、%=
自增案例:
int a=4;
int b=5;
System.out.println(a++<b && a++>b);//a<b成立,a++,(a=5)a>b不成立,a++ (a=6)
System.out.println(a);//a=6
int a=4;
int b=5;
System.out.println(a++>b && a++<b);//a>b不成立,a++,(a=5) 后面不执行
System.out.println(a);//a=5
3、关系运算符(用于条件判断:true、false):
==(等于) 、!=(不等于,!为英文状态)、> 、< 、>= 、<=
4、逻辑运算符(&&与、||或、!非):先与后或
&&:短路与,x && y ——> 只有x,y都为true时,结果才为true
——> 当x为false时,y表达式不会执行
&:x & y ——> 当x为false时,y表达式仍会执行
||:短路或,x || y ——>只有x,y都为false时,结果才为false
——>当x为true时,y表达式不会执行
|:x | y ——> 当x为true时,y表达式仍会执行
!:取反,!x ——> x的值如果为true,结果就为false
x的值如果为false,结果就为true
三元表达式
条件表达式?rst1:rst2
rst1:表达式为true的结果 赋值给 变量
rst2:表达式为false的结果 赋值给 变量
案例 :
程序调试
1、设置断点(在行序号处,鼠标左键单击一下,出现红点√,即为断点)
2、debug运行程序
在行序号处运行按钮上右击,选择debug……
或 单击右上角的debug图标(这里注意选中的程序)
下方跳出调试窗口,即Debugger窗口
3、单步调试(观察变量的值、程序运行的步骤)
调试窗口内容: 打开调试窗口后,Frames 栏显示的是当前压栈的方法,跟栈区运行一样,先进后出,最先压栈的在最下面,最上面的最后压栈,也就是最后一次加载进栈区的方法,而方法名前面显示的数字就是当前调试进度所在的行数;
点击 Variables 栏的 “+” 可以选择需要观测的变量名,如果当前的调试进度还未创建该变量或对象,则会显示"Cannot find local variable",纯属正常,不必在意;
上面一栏最开始的两个箭头是最常用的单步执行操作:
第一个蓝色箭头 step over(快捷键 F8),不进入方法体。也就是说,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完在停止,即 把子函数作为一个整体进行单步执行;
第二个蓝色箭头step into(快捷键 F7),进入方法体。即,遇到子函数会进入并且继续单步执行。
操作: 如果说调试工具栏忽然变灰,一般来说是碰到了输入语句,你需要点击 Console 返回命令窗口输入后再返回来,如果是连续的输入可以一次性输入完:
如果说当前的调试进度已经发现了问题在哪里,觉得不用再进行下去,可以点击 Debug 后面的×关闭:
注意点: 有时候可能会碰到点击调试按钮但是当前调试界面却并不是想要调试的文件的情况,你需要把当前的执行窗口切换过来:
此处参考CSDN博主「山之素季」的IDEA 基本调试 (最最最简单易懂的单步执行)_idea单步调试_山之素季的博客-CSDN博客,通俗易懂~