概述
- 1995年 Java问世,1996年 JDK 1.0,2009年 Oracle以超过70亿美元交易总值收购了Sun
- java之父:James Gosling Oak
- Java特点:简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java的分类
- JavaME(Java2 Micro Edition,Java2平台的微型版),主要应用于嵌入式系统开发,如机顶盒、移动电话和PDA之类嵌入式消费电子设备。
- javaSE(Java 2 Standard Edition,Java 2平台的标准版),主要应用于桌面应用软件的编程。
- javaEE(Java 2Enterprise Edition,Java 2平台的企业版),主要应用于分布式的网络程序的开发,如电子商务网站和ERP系统。
jdk的安装
- JDK --- Java Development Kit (Java 开发工具包)
- JRE --- Java Runtime Environment (Java 运行环境)
- JVM --- Java Virtual Machines (Java 虚拟机)
- java的技术体系架构: 安装jdk的时候,主要安装的是java se相关内容。
Java的第一个程序
public class Hello {
public static void main(String[] args) {
System.out.println("Helloword");
}
}
Java语言需要先编译然后解释运行
- 编写的Java文件(.java)要先经过编译,生成字节码文件(.class),java程序的运行需要jvm的支持为字节码文件提供运行环境。jvm是一个软件,安装在操作系统中。
- Java源文件(.java) → java字节码文件(.class)→JVM→ 操作系统
Java的编译期和运行期
- 编译期:通过Javac命令编译源程序,编译(.java文件)生成字节码文件(.class)
- 运行期:通过Java命令启动jvm加载.class文件然后运行.class文件
Java的跨平台
Java的一大特点跨平台:实现"一处编译,到处使用"。Java有一个核心:JVM,Java Virtual Machine(Java虚拟机),它用于解释Java的字节码文件。Java官方提供了针对不同平台的JVM软件,这些JVM遵循相同的标准,只要是标准的.class文 件,就可以在不同的操作系统上运行,且运行结果一样。
编写Java程序的注意事项
- Java的每一个程序都要创建class类,这是jdk指定的规则。
- Java的每一个程序都有一个main方法,称为主函数或入口函数,是程序启动的依赖。
- Java中严格区分大小写和中英文字符等,程序中涉及的符号([]、()、{})必须是成对出现的。
-
标识符 :为 ”变量、类(接口)、方法“ 进行命名的符号
-
1、标识符的开头只能以_、$、字母 2、标识符的中间和结尾以_、$、字母、数字为主要内容 3、不能以关键字或者特殊字符命名,(长度、大小写、换行) 4、见名知意(对变量进行特殊的名称定义,会帮助我们或者其他开发者理解程序功能,翻译软件)
-
1、驼峰法 我的苹果 ==> my apple ==> myApple MyApple 首写字母小写 :小驼峰法 主要用于变量、方法命名 首写字母大写 :大驼峰法 主要用于类 或者接口命名 2、下划线隔断法 我的苹果 ==> my_apple
Java中的语句注释
- 单行注释 快捷键:ctrl + /
//123abc
- 多行注释 快捷键:ctrl+shift+/
/*123abc
12245
58525*/
- 文档注释
/**
123abc
12245
58525
*/
Java变量
- 变量:是指在内存中的一块存储空间,用于存储程序运算过程中需要用到的数据
变量的定义
变量声明的语法规则:变量类型 变量名字=初始值;
Java变量 | 变量的定义 | 未经声明的变量不能使用 |
一条语句中声明多个同类型变量,用逗号隔开 | ||
变量的命名 | 名字必须符合Java标识符语法规则,可以由字母、数字、_、$组成 首字母不能以数字开头、区分大小写命名时需要注意、不能使用 Java保留字。 |
|
见名知意,驼峰命名法,避免中文 | ||
变量的初始化 | 未经初始化的变量不能使用 | |
定义时初始化初次使用前初始化 | ||
变量的使用和访问 | 可以对变量的值进行存取和操作 | |
变量操作需遵守定义时的数据类型 |
变量相关代码
package day2;
//定义(声明)变量
public class vardemo {
public static void main(String[] args) {
//1.定义变量
int a ; //定义一个整形变量a
a = 100 ; //“=”: 表示给变量赋值
int b ;
b = 200 ;
int c = a + b ;
System.out.println("c:" + c);
//2.定义变量的时候,直接给变量赋值
String birth = "2000-10-10";
//int a = 22 ; //编译错误:同一个代码区域内,不允许变量名重复
int age = 22 ;
System.out.println("你出生于:" + birth + ",今年" + age + "岁");
//3.未经声明的变量不能使用
//address = "看DNF"; 编译错误,未经声明的变量不能直接使用
String address ;//声明变量
address = "在看放空单费";
//4.一条语句声明多个变量
int a1 , a2 , a3 ;
//System.out.println(a1 + a2 + a3);//编译错误:没有初始化的变量,不能直接做加法运算。
a1 = 5 ;
a2 = 6 ;
a3 = 7 ;
System.out.println("和:" + (a1+a2+a3));
int b1= 7 ,b2= 8 ,b3=9 ;
System.out.println("和:" + (b1+b2+b3));
//5.变量名规则
int $ = 100;
int _ = 200;
//int * = 300;//编译错误:变量名只能包含数字 字符 _ $,并且不能是纯数字
String name = "alice";
//System.out.println(Name);//编译错误:严格区分大小写
//int int = 2022111;//编译错误:不能用关键字作为变量名
String englishName = "张老师";//这里不是驼峰命名法:第一和单词首字母大写,后续单词首字母小写
}
}
Java中的关键字
abstract | assert | boolean | break | byte | continue |
case | catch | char | class | const | double |
default | do | extends | else | enum | final |
finally | float | for | goto | long | if |
implements | import | native | new | null | istanceof |
int | interface | package | private | protected | public |
return | short | static | strictfp | super | switch |
synchronized | this | while | void | throw | throws |
transient | try | volatile |
Java中的交接班数据类型
类型名称 | 字节空间 | 类型说明 |
byte | 一个字节(8位) | 存储一个字节数据 |
short | 两个字节(16位) | 兼容性考虑,一般不用 |
int | 四个字节(32位) | 存储整数(常用) |
long | 八个字节(64位) | 存储长整数(常用) |
float | 四个字节(32位) | 存储浮点数 |
double | 八个字节(16位) | 存储双精度浮点数(常用) |
char | 两个字节(8位) | 存储一个字符 |
整形int
- int是最常用的整数类型:4个字节(32位) 最大表示范围:-2147483648~2147483647
- 整数类型的直接量(literal)默认是int类型。
- 两个int整数相除(/),结果取整,舍弃小数部分(非四舍五入),结果还是整数。
- 整数运算要防止溢出 -整数运算的过程中,运算结果,如果超过了整数能表示的最大范围,会发生溢出。 正数过大溢出,结果变为负数;负数过小溢出,结果变为正数。
- int类型代码
package day2;
//int数据类型介绍
public class lntDemo {
public static void main(String[] args) {
//1.int的数据是占4个字节
int a = 10000 ;
System.out.println("a:" + a);//输出变量a
//int a1 = 10000000000;//编译错误:超过了int的最大范围
int b = 1500000000;
int c = 1500000000;
int sum = b + c ;//和超过了int的最大值
System.out.println("sum:" + sum);//sum:-1294967296,这里溢出了。并没有啥错但是结果不准确
//2.直接量
int k = 100 ;//这里的100就是直接量
System.out.println("k十进制:" + k);
int k1 = 0x100 ;
System.out.println("k1十六进制:" + k1);
int k2 = 0100 ;
System.out.println("k2是8进制" + k2);
//3.int数据的运算:+ - * /(取整) %(取余)
int a1 = 9 ;//定义变量
int a2 = 4 ;
int c1 = a1 + a2;//c1=13
int c2 = a1 - a2;//c2=5
int c3 = a1 * a2;//c3=36
int c4 = a1 / a2;//取整:Java程序中规定,两个整数的运算结果只能是整数(9/4 等于2)
System.out.println("c4:" + c4);
int c5 = a1 % a2;//取余:获取两个数相除的余数
System.out.println("c5:" + c5);
if(a1 % 2 == 0){//a1 % 2 == 0 判断是否相等,结果是true或false
System.out.println(a1 + "是偶数");
}else{
System.out.println(a1 + "是奇数");
}
//除法的练习,计算百分比
int current= 33;
int total = 50;
System.out.println("第一种:");
System.out.println(current / total * 100 + "%");
System.out.println("第二种:");
System.out.println(current *100 / tot