Day02 从0开始第一个java程序
从0开始第一个java程序
java的特性与优势
- 简单性-没有指针,内存管理
- 面向对象-模拟人的思维
- 可移植性-虚拟机的存在
- 高性能-即时编译
- 分布式
- 动态性-反射
- 多线程
- 安全性-异常捕获,内存检查
JDK,JRE,JVM
-
JDK:java development kit
-
JRE:java runtime envirment
-
jvm:java virtual machine
jdk包含jre和jvm;
使用jdk即可进行java开发
使用jre即可运行java程序;
jvm用于实现跨平台

安装开发环境
卸载原环境
- 删除jdk目录
- 删除环境变量(java_home和path中的java相关变量)
- 打开cmd,输入java -version检验
安装新环境
-
下载jdk1.8,记住路径D:\Envirment\JAVA\jdk1.8
-
配置环境变量
- 系统变量--->JAVA_HOME = D:\Envirment\JAVA\jdk1.8
- PATH变量--->增加值:%JAVA_HOME%\bin
- PATH变量--->增加值:%JAVA_HOME%\jre
-
打开cmd,输入java -version检验
第一个hello world
-
新建一个文件夹存放代码
-
新建Hello.java文件
-
在文件中创建一个Hello类,打印helloworld
-
在该路径下输入cmd,进入命令提示符
-
输入javac Hello.java,发现生成了class文件
-
接着输入java Hello,成功打印
编译型和解释型
-
编译型=将看不懂的书一次性全部翻译能看懂的语言
-
解释型=请翻译官逐句进行即时翻译
优劣
编译型:由于是一次性编译无限次执行的,这样做效率很高,速度快,但是如过原程序有更新,则需要重新编译;其次,不同的操作系统编译器不同,导致跨平台性不强
解释型:不需要编译,边运行边使用解释器解释为机器码,这就导致速度偏慢,不同平台的解释器都能将源代码解释为相同的机器码,这就使得他的跨平台性很强
java的编译和解释
Java即有编译型的部分,也有解释型的部分。
首先,编译器将编写好的java文件一次性编译为类(class)文件,然后经由虚拟机的类装载器加载进jvm,再通过代码校验,最后解释器进行解释执行
JAVA基础
数据类型
//八大基本数据类型
/*byte占1个字节*/
byte num1 = 127;
/*short占2个字节*/
short num2 = 1270;
/*int占4个字节*/
int num3 = 12700;
/*long占8个字节*/
long num4 = 1270000;
/*float占4个字节*/
float num5 = 127f;
/*double占8个字节*/
double num6 = 127d;
/*char占2个字节*/
char char1 = 'a';
/*boolean占1个位*/
boolean bool1 = true;
1位=1bit
1个字节=1byte
1Byte=8bit
1KB=1024Byte
1MB=1024KB
基本类型拓展
//基本数据类型扩展
//1.整数 十进制 八进制 十六进制
int a = 10;
int b = 010;
int c = 0x10;
System.out.println(a);
System.out.println(b);//8
System.out.println(c);//16
System.out.println("=============");
//2.浮点数在运算与比较时的情况
//可以看到在浮点数进行大型数据计算时会出现错误,浮点数是离散的
//BigDecimal 进行计算
//应避免浮点数运算与比较!!!!
//应避免浮点数运算与比较!!!!
//应避免浮点数运算与比较!!!!
float f1 = 1232323232323f;
float f2 = f1 + 1;
System.out.println(f2==f1);//ture
double d1 = 0.1;
double d2 = 1/10;
System.out.println(d1);
System.out.println(d2);
System.out.println(d1==d2);//false
double d3 = 0.1d;
float f3 = 1f/10f;
System.out.println(d3);
System.out.println(f3);
System.out.println(d3==f3);//false
System.out.println("=============");
//3.字符拓展
//unicode编码 2字节 65536 2的16次方
char c1 = 'a';
char c2 = '中';
char c3 = '∑';
System.out.println(c1);//97
System.out.println(c2);//20013
System.out.println(c3);//8721
System.out.println((int)c1);
System.out.println((int)c2);
System.out.println((int)c3);
System.out.println("=============");
//4.转义字符
System.out.println("hello\nworld");//换行
System.out.println("hello\rworld");//回车
System.out.println("hello\fworld");//换页
System.out.println("hello\tworld");//tab键
类型转换
由于java是强制性语言,每个类型运算前必须转换为同一类型
-
强制类型转换:高--》低转换。会造成精度损失和内存溢出。
-
自动类型转换:低--》高转换。
//高-》低 强制转换 int i = 128; byte b = (byte)i; System.out.println(b);//-128 内存溢出 //低-》高 自动转换 byte b1 = 127; int i1 = b1; System.out.println(i1);//127 //操作大数据时,注意内存溢出 int a = 20_0000_0000; int b = 10; System.out.println(a*b);//-1474836480 内存溢出了 //将其中一个转为long,再用long接受,内存就不溢出了 long l1 = a*(long)b; System.out.println(l1);//20000000000
变量
-
类变量
-
实例变量
-
局部变量
//1.类变量 在整个类中可以使用(在类加载时加载) static String sex = ""; //2.实例变量 在整个类中可以使用 //boolean 默认为false //除了基本数据类型,其他默认都为null String name; private int age; public static void main(String[] args) { //3.局部变量 在方法内部使用 int a = 10; //变量类型 Demo08 demo08 = new Demo08(); System.out.println(demo08.age);
运算符
-
位运算符:左移一位*2,右移一位/2,效率很高
-
短路:&&运算符前者为false,后者直接跳过
scanner类
scanner类可以实现人机之间的交互
//创建一个扫描器对象,用来捕获键盘输入
Scanner sc = new Scanner(System.in);
System.out.println("使用键盘输入:");
//如果有输入
if (sc.hasNext()) {
//打印输入的字符
System.out.println("您的输入为:"+sc.next());
}
//io流使用完必须关掉,节省资源
//io流使用完必须关掉,节省资源
//io流使用完必须关掉,节省资源
sc.close();
//hasNext()不能获得输入空格后的字符 hasNextLine()不能获得输入回车后的字符
浙公网安备 33010602011771号