计算机结构
JDK,JRE,JVM
JDK: Java Development Kit (Java开发工具)
JRE: Java Runtime Environment (Java运行环境)
JVM:Java Virtual Machine (Java虚拟机)
JVM就像是小型的CPU处理java相关的东西,JRE只要安装了就可以运行Java,但是作为开发者需要JDK,而一般下载了JDK就会包含JRE。
JDK文件目录介绍
bin: 包含一些可执行程序,比如java.exe, javac.exe(编译工具)
include:jdk是由c和c++编写的,所以包含c和c++的一些头文件
jre:java运行时的环境
Java程序运行机制
编译型:将一段程序全部编译完后再执行
解释型:编译一条语句之后直接执行,然后再编译下一条语句
编译型的效率更高,因为已经把所有的都翻译好了只用执行,所以操作系统,c/c++等都是编译型的
解释型的速度不高,但随着现在硬件技术的不断提升,解释型的速度和编译型相比并不差多少,两者的边界已越来越模糊。
Java是包含了两种类型,更偏向于解释型,它是先编译成字节码,然后运行时通过JVM到操作系统时才一步一步解释成机器码。
javac命令编译成*.class文件
Java开发工具:IDEA
IDEA有很多简便的方法:
比如输入psvm就能打印出private static void main(…)语句,输入sout就能打印出System.out.println语句
可以百度搜索“IDEA优化”
Java——标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关键字:String不是关键字!而是一个类
标识符的注意点:
Java数据类型
强类型语言:有严格的规定,所有变量都必须先声明再使用。
java安全性高,但是速度慢
类型转换
由于Java是强类型语言,所以在进行运算时有时候需要转换。
低---------------------------------------------->高
byte,short,char->int->long->float->double
运算中,不同类型的数据要先转换成同一类型才能进行运算。
变量
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,便能量类型和作用域
//程序可读性
int a=1;
int b=2;
int c=3;
String name="sunny";
char x='X';
double pi=3.14;
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型(String)
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明必须以分号结束
变量作用域
- 类变量
- 实例变量
- 局部变量
public class Demo08 {
//类变量 static ,从属于这个类,和这个类一起出来一起消失
static double salary=2500;
//属性:变量
//实例变量:从属于对象,如果不自行初始化,这个类型的默认值 0,0.0
//布尔值:默认是false
//除了基本类型,其余的都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i=10;
System.out.println(i);
//实例变量 :变量类型 变量名字 =new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);//输出0
System.out.println(demo08.name);
//类变量
System.out.println(salary);
}
}
常量
常量(constant):初始化之后不能再改变值
所谓常量可以理解成一种特殊的变量,值被设定后,在程序运行过程中不再改变。
public class Demo09 {
//static 和final都是修饰符,不存在先后顺序
static final double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
常量名一般使用大写字符
变量的命名规范
类成员变量,局部变量,方法名:首字母小写和驼峰原则:monthySalary
类名:首字母大写和驼峰原则:Man,GoodMan
常量:大写字母和恶下划线:MAX_VALUE
基本运算
二元运算
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl+D:复制当前行到下一行
int a =10;
int b=20;
int c=25;
int d=25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);//如果不加double,则会等于0.5,但是是int型,所以会抹去小数输出0
}
}
赋值运算:
public class Demo02 {
public static void main(String[] args) {
long a=123456556445353L;
int b=123;
short c=10;
byte d=8;
//规则:对于整型:如果有Long类型则结果为Long类型,否则为int类型
//整型中如果有double则输出为double
System.out.println(a+b+c+d);//Long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
}
}
关系运算&模运算
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
//if
int a= 10;
int b=20;
int c=11;
//取余,模运算
System.out.println(c%a);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}