关于JAVA
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
java于1995年5月23日由Sun公司推出,后来Sun公司在2009年4月20日被Oracle公司用74亿美元收购了,java版权到了Oracle公司手中。java又称Oak,别称“爪哇岛”
java是面向对象的程序设计语言,拥有安全性、简单性、易用性、平台无关性的特点。java语言的语法与C语言和C++语言很相近。
在Java程序设计当中,多线程编程是一个重要的主题,它虽然允许我们创建多个执行路径来同时处理不同的任务。但是,多线程编程也带来了一个问题:线程安全。当多个线程同时访问和修改共享数据时就可能会导致数据不一致以及其他并发问题。在本文中,将探讨Java中的多线程同步机制,并通过实例和图解来深入理解它。
编程环境
JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一些Java工具和Java的核心类库(Java API)。不论什么Java应用服务器实质都是内置了某个版本的JDK。主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如,IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK 。
另外,可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境 。
JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。但由于JDK包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可 。
一、JAVA数据类型
1.1 JAVA数据类型
JAVA的数据类型分为‘基本数据类型’、‘引用数据类型’这两种类。
基本数据类型 | 关键字 | 所占字节 | 取值范围 | 默认值 |
整数 | byte(字节类型) | 1 | -128~127 | 0 |
整数 | short(短整型) | 2 | -32768~32767 | 0 |
整数 | int(整型) | 4 | -2的31次方到2的31次方-1 | 0 |
整数 | long(长整型) | 8 | -2的63次方到2的63次方-1 | 0L |
浮点数 | float(单精度) | 4 | -3.402823E+38到-1.401298E-45与1.401298E-45到3.402823E+38 | 0.0f |
浮点数 | double(双精度) | 8 | -1.797693E+308到-4.9000000E-45与1.401298E-324到1.797693E+308 | 0.0d |
字符 | char(字符) | 2 | 0~65535 | 'u00000' |
布尔 | boolean(布尔) | 1 | true、false | false |
说明:E+x是表示乘以的10的x次方。
引用数据类型 | 关键字 |
类 | class |
接口 | interface |
数组 | [] |
二、数据类型转换
2.1 显性转换
取值范围大的数据转换为取值范围小的数据过程
double x = 10.35;
int y = (int) x;
y = 10
2.2数值型转换为字符串
数据型数据转换为字符串用String.valueOf()方法可以实现
int num1 = 20;
String num2 = String.valueOf(num1);//将int类型转换为字符串
2.3字符串转换为数值型
字符串数据转换为数值型使用parseXxx()方法可实现
String str = '20';
int x = Integer.parseInt(str);//将字符串转换为int数据
3、for循环语句
for循环通常用于已知循环次数,循环使用时测试时候满足某个条件,如果满足就进入下一次循环,如果不满足则退出该循环。
for(初始化表达式:1;布尔表达式:2;表达式:3){//外层语句
// 内层语句
}
初始化表达式1:循环开始运行一次,可做赋值操作
布尔表达式2:返回布尔值,控制循环是否继续执行
表达3:通常是赋值表达式,在完成一次循环之后执行
3.1 举例1
计算1+2+…+100。
public class aaa {
public static void main(String[] args){
int sum = 0;//此变量用于存储结果
for(int i = 1;i <= 100){
sum += i;//sum累加i
}
System.out.println('结果为:'+sum)
}
}
3.2举例2
输入5个数,输出其中的最大的数。
public class bbb {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
double num = sc.nextDouble();
double max = num;//用于存储最大值
for(int i = 1;i<=10;){
System.out.println('请输入第'+i+'个数');
num = sc.nextDouble();
if(num>max){
max = num;
}
}
System.out.println('在这十个数的最大值是'+max);
}
}
3.3嵌套for循环
存在至少两层for循环,先对外层循环进行判断,在根据其结果,判断力层能否执行,若能执行,就把里层代码都循环,再继续判断是否执行外层循环的下一次循环。
形式
for(初始条件;循环条件;更改条件;){//外层循环
for(初始条件;循环条件;更改条件){//里层循环
循环体;
}
}
案例:打印 九九乘法表
public class ccc{
public static void main(String[] args){
for (int i = 1;i <= 9;i++){//外层循环控制行数,打印九行
for (int j = 1; j <=i;j++){//内层循环控制列数,i行打印i列
System.out.print(j+'*'+i+'='+(i*j)+'\t');
}
System.out.println();用空行来换行
}
}
}
结果
4、break和continue
4.1break(结束)
1.break语句用于跳出本层循环,进入外层循环。如果是在循环嵌套中,在内层循环中遇到了break,只会跳出当前这一层循环。
2.在循环语句中常与条件语句一起使用。
4.2continue(跳循环,下一个)
1.continue用于终止本次循环,跳过该循环体中位于continue后面的语句,进入下一个循环。
2.用于循环体中,类似于break语句,常与条件语句一起使用。
举例
public class demo{
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i==5){
break;
}
System.out.print(i);
}
System.out.println();
for(int j=1;j<=10;j++){
if(j<5){
continue;
}
System.out.print(j);
}
}
}
拓展
- for:知道循环次数
- while/do while:当循环次数不确定时
- while:先判断,不符合条件,不执行代码
- do while:代码最少被执行一次,再去判断,符合条件,再次执行代码