目录
一. 认识Java
1.语言发展史
2.Java语言特性
3.Java开发环境的搭建
二.第一个Java程序
Java中的注释
三.数据类型和变量
1.数据类型
2.变量
3.基本类型之间的转换
4.基本数据类型转引用数据类型(包装类)
5.字符串类型与基本数据类型之间的转换
四.运算符
1.算数运算符
2.关系运算符
3.逻辑运算符
4.位运算符
5.条件运算符(三目运算符)
五.逻辑控制语句
1.选择语句
2.循环语句
3.猜数字游戏(带源码实现)
Java是一种优秀的程序设计语言,它出身于C++,继承了C++面相对象的优点并加以完善,具有赏心悦目的语法和易于理解的语意。在过去十年里Java常年占据TIOBE编程语言社区排行榜榜首,并深受编程爱好者们的喜爱,如今的Java已经是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统,移动终端,企业服务器,大型机等各种场合。
Java语言源于1991年4月,Sun公司James Gosling博士领导的绿色计划(Green Project)开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品上运行的程序框架。于是得到了Java的前身:Oak,但由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该计划。随着互联网的发展,Sun公司看到了Oak在互联网上应用的前景,于是改造了Oak,于1995年五月以Java的名称正式发布,并提出“Write once,Run anywhere”的口号。
JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。
2009年Sun公司被Oracle收购,并由Oracle公司发布了JDK 7及之后的版本,如今虽然JDK版本已经更新至JDK 21,但JDK 8依旧占据着市面上的主流地位,但听说这周idea(当下Java最流行的IDE集成开发环境)最新一次的更新中,Java当下最流行的框架SpringBoot已经不在支持JDK 8版本,预测今后流行的版本可能会是JDK 17。但对于初学者而言,版本之间的基础语法没有太大变化,学习JDK 8依旧可行。
以上Java的特点目前不做概述,在以后的学习中大家能慢慢体会到。简单点讲Java语言结合了C++语言的面相对象,舍弃了C++的指针,并有了自己独特的编译方式通过JDK中自带的JVM虚拟机来编译执行并以此实现可移植性,提高了程序员们的开发效率,但也因此失去了部分运行效率,如果是说C++追求的是极致的运行效率,那么Java就是在兼顾不太逊色的运行效率的同时又考虑到了程序员们的开发效率。
开发环境的搭建分为三步
1.安装JDK
2.配置环境变量
3.下载IDE集成开发环境
点击以下链接便可以下载JDK各种系统下的各种版本安装包:
JDK下载官方网站
一个后缀名为.java的文件运行首先由JDK编译为.class的字节码文件,然后再由JRE(Java运行环境)执行.class文件从而达到运行的目的。
配置环境变量的目的是为了让你的JDK能在任意路径下被找到,可以通过右键此电脑,点击属性,找到高级系统设置,打开后就能看到环境变量的选项,点开后在系统变量的Path路径下新建一个路径,在变量名那一行输入你电脑中JDKbin目录下的地址就配置成功了。
比如我的电脑只需输入C:\Program Files\Java\jdk1.8.0_192\bin\即可,配置成功之后在cmd下运行命令电脑会优先在系统变量的路径下找,找不到,且在你cmd的根路径下也找不到的话才会提示找不到。
接下来就是IDE的安装,下面是idea的官方网址,官方版本需要付费使用,我们学习爱好者们使用community开源版本就可以啦:idea官方网址
public class Main{
public static void main(String args[]){
System.out.println("Hello world!");
}
}
在这个Java程序中,我们可以看到许多与C语言不同的地方,我可以来带大家认识一下这段代码:
接下来大家便可以在下载好的idea中运行这段写好的程序了。
Java中有三种注释规则分别是:
tips:多行注释不能嵌套使用,所有注释内容都不参与编译。
在Java中有八种基本数据类型,和各种引用数据类型。
tips:
计算机中不能准确表示一个小数,储存小数一定存在误差,想表示两个浮点数相等可以用下面的方法:
//浮点数问题
double value1=0.7-0.6;
double value2=0.8-0.7;
//运行结果是false
System.out.println(value1==value2);
//正确比较两个浮点数的方法
//定义一个极小值
double min=1e-6f;
//通过判断两数相减绝对值小于极小值来判断两数大小
if (Math.abs(value1 - value2) < diff) {
System.out.println("value1的值与value2的值相等");
}
在程序中有常量和变量之分,对于可能会发生改变的内容,在Java程序中称为变量,数据类型就是用来定义不同种类变量的。
定义变量的语法格式:
数据类型 变量名 = 初始值;
tips:
Java中有自动类型转换(隐式)和强制类型转换(显式)两种
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
tips:有两个特例对于short,byte这种比4个字节小的类型之间的运算,会先提升成4个字节的int类型,在进行运算。
Java为八大基本数据类型分别提供了八个包装类,用这些类名便可以定义引用类型的int或float等,方便与字符串之间的转换。他们之间的对应关系如下:
int ------------------- Integer
char------------------- Character
byte ------------------ Byte
long ------------------ Long
short ----------------- Short
float ----------------- Float
double -------------- Double
boolean ------------- Boolean
自动装箱,自动拆箱:
int a=10;
Integer b=a;//基本数据类型在转化为包装类的过程中JVM会自动识别并转化,该过程被称为自动装箱。
int c=b;//这种包装类转化为基本数据类型的过程被称为自动拆箱。
1. 将String转换为Char数组
String str="abcdefg";
char arr[]=str.toCharArray();
2. 将Char数组转化为String
Char[] c={'a','b','c','d','e','f','g'};
方法一:
String str1=new String(c);
方法二:
String str2=new String();
str2=String.valueOf(c);
3. 将Char转化为Int
char c='1';
方法一:
int i1=c1-'0'//‘0’在ascll码表中对应的值是48;
方法二:
int i2=c1-48;
方法三:
int i3=Integer.valueOf(String.valueOf(c1));
方法四:
int i4=Integer.parseInt(String.value(c1));
4. Int转化为Char
int i=1;
方法一:
char c1=(char) ((char) i+48);
方法二:
char c2=(char) (i+'0');
方法三:
char c3 = String.valueOf(i).toCharArray()[0];
5. String转化为Int
String str1="123";
int num=Integer.parseInt(str1);
6. Int转化为String
方法一:
String str1 = num+" ";
方法2:
String str2 = String.valueOf(num);
方法3:
String str3 = Integer.toString(num);
Java中运算符大概可以分为五种,算术运算符,关系运算符,逻辑运算符,位运算符和条件运算符。
基本运算:+,-,*,/,%。
增量运算符:+=,-=,*=,%=。
自增运算符:++,--。
计算结果为true或false:==,!=,<,>,<=,>=。
三个逻辑运算符:&&,||,!。
需要注意,&&和||遵守短路求值的规则。
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
即:
对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
这些运算符都是针对数字的二进制位进行运算:
&按位与,|按位或,~按位取反,^按位异或,<<左移运算符,>>右移运算符,>>>无符号右移。
tips:
如果两个数相同,则异或的结果是0
表达式1:表达式2?表达式3
在这个环节我会向大家介绍一下java中常见的选择语句,循环语句,并用这些语句为大家提供一个经典的猜数字游戏(含代码和运行结果)。
//第一种形式
int score = 92;
if(score >= 90){
System.out.println("吃个大鸡腿!!!");
}
//第二种形式
int score = 92;
if(score >= 90){
System.out.println("吃个大鸡腿!!!");
}else{
System.out.println("挨大嘴巴子!!!");
}
//第三种形式
int num = 10;
if (num > 0) {
System.out.println("正数");
} else if (num < 0) {
System.out.println("负数");
} else {
System.out.println("0");
}
Switch语句的执行流程:
int day = 1;
switch(day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入有误");
break;
}
tips:使用Switch语句时需要注意每条语句后面的break;
Java中常见的循环语句有while()循环,for(){}循环,do{}while()循环三种;
下面是while循环的展示:
//计算1-100的和
int n = 1;
int result = 0;
while (n <= 100) {
result += n;
n++;
}
System.out.println(num);
// 执行结果
5050
下面是for循环的演示:
//计算1-100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("sum = " + sum);
// 执行结果
5050
下面是do{}while()循环的演示:
//打印1-10
int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 10);
tips:
在循环语句里可以使用break;语句和continue;语句:
break;语句的作用是跳出循环,
continue;语句的作用的跳过这次循环,立即进入下次循环,希望大家不要搞错哦。
看到这里的小伙伴们已经很棒了,我们已经可以用学过的知识去实现一个简单的猜数字小游戏了,大家可以先自己尝试在看源码哦。
题目:
系统自动生成一个随机整数 (1-100), 然后由用户输入一个猜测的数字 . 如果输入的数字比该随机数小 , 提示 " 低了 ", 如果输入的数字比该随机数大 , 提示 " 高了 " , 如果输入的数字和随机数相等 , 则提示 " 猜对了 " .
import java.util.Random;
import java.util.Scanner;;
class Test {
public static void main(String[] args) {
Random random = new Random(); // 默认随机种子是系统时间
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);
// System.out.println("toGuess: " + toGuess);
while (true) {
System.out.println("请输入要输入的数字: (1-100)");
int num = sc.nextInt();
if (num < toGuess) {
System.out.println("低了");
} else if (num > toGuess) {
System.out.println("高了");
} else {
System.out.println("猜对了");
break;
}
}
sc.close();//此处关闭System.in系统流。
}
}
点关注,不迷路!下期更新不会断。