【JavaSE】Java入门一(包含数据类型,运算符,逻辑控制语句七千字详解)

目录

一. 认识Java

1.语言发展史

2.Java语言特性

3.Java开发环境的搭建

二.第一个Java程序

Java中的注释

三.数据类型和变量

1.数据类型

2.变量

3.基本类型之间的转换

4.基本数据类型转引用数据类型(包装类)

5.字符串类型与基本数据类型之间的转换

四.运算符

1.算数运算符

2.关系运算符

3.逻辑运算符

4.位运算符

5.条件运算符(三目运算符)

五.逻辑控制语句

1.选择语句

2.循环语句

3.猜数字游戏(带源码实现)


一. 认识Java

Java是一种优秀的程序设计语言,它出身于C++,继承了C++面相对象的优点并加以完善,具有赏心悦目的语法和易于理解的语意。在过去十年里Java常年占据TIOBE编程语言社区排行榜榜首,并深受编程爱好者们的喜爱,如今的Java已经是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统,移动终端,企业服务器,大型机等各种场合。

1.语言发展史

    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。【JavaSE】Java入门一(包含数据类型,运算符,逻辑控制语句七千字详解)_第1张图片

2009年Sun公司被Oracle收购,并由Oracle公司发布了JDK 7及之后的版本,如今虽然JDK版本已经更新至JDK 21,但JDK 8依旧占据着市面上的主流地位,但听说这周idea(当下Java最流行的IDE集成开发环境)最新一次的更新中,Java当下最流行的框架SpringBoot已经不在支持JDK 8版本,预测今后流行的版本可能会是JDK 17。但对于初学者而言,版本之间的基础语法没有太大变化,学习JDK 8依旧可行。

2.Java语言特性

  1. 简单性
  2. 面向对象
  3. 分布式
  4. 健壮性
  5. 安全性
  6. 体系结构中立
  7. 可移植性
  8. 解释性
  9. 高性能
  10. 多线程
  11. 动态性

以上Java的特点目前不做概述,在以后的学习中大家能慢慢体会到。简单点讲Java语言结合了C++语言的面相对象,舍弃了C++的指针,并有了自己独特的编译方式通过JDK中自带的JVM虚拟机来编译执行并以此实现可移植性,提高了程序员们的开发效率,但也因此失去了部分运行效率,如果是说C++追求的是极致的运行效率,那么Java就是在兼顾不太逊色的运行效率的同时又考虑到了程序员们的开发效率。

3.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官方网址

二.第一个Java程序

public class Main{
public static void main(String args[]){
      System.out.println("Hello world!");
    }
}

在这个Java程序中,我们可以看到许多与C语言不同的地方,我可以来带大家认识一下这段代码:

  • public class Main:这里定义了一个名为Main的公共类,因为Java语言设计的初衷是Write once,Run anywhere。写一次,然后就能重复利用,所以Java舍弃了C语言那种可以直接定义方法(Java中的方法等同于C语言中的函数)的行为,Java中所有的代码均写在类中,这里需要注意在IDE中入口方法所在类必须用public修饰,类名必须与.java文件的文件名相同且一个.java文件只能有一个public修饰的类。
  • public static void main (){}:这是Java中的一个静态方法,该方法为Java程序提供了一个公共入口。
  • String args[]:这是为main主方法提供的一个参数,可以接受命令行参数,也可以写成String[] args。
  • System.out.println("Hello world!"):这是java中的输出语句可以在consoles输出一段Hello world!(默认自动换行),System.out表示一个输出流,println是输出流中的方法,也可以换成System.out.print();(不换行),或者System.out.printf();(可以使用C语言用%d,%c,\n的类似表达,不换行)。

接下来大家便可以在下载好的idea中运行这段写好的程序了。

【JavaSE】Java入门一(包含数据类型,运算符,逻辑控制语句七千字详解)_第2张图片

Java中的注释

Java中有三种注释规则分别是:

  • 单行注释://注释内容(用的最多)
  • 多行注释:/* 注释内容*/(不推荐)
  • 文档注释:/**文档注释*/(常见于方法和类之上描述方法 和类的作用)。

tips:多行注释不能嵌套使用,所有注释内容都不参与编译。

三.数据类型和变量

1.数据类型

在Java中有八种基本数据类型,和各种引用数据类型。

【JavaSE】Java入门一(包含数据类型,运算符,逻辑控制语句七千字详解)_第3张图片

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的值相等");
}

2.变量

在程序中有常量和变量之分,对于可能会发生改变的内容,在Java程序中称为变量,数据类型就是用来定义不同种类变量的。

定义变量的语法格式:

数据类型 变量名 = 初始值;

tips:

  1. 变量在编译时必须要赋初值,否则会变异报错。
  2. 为了区分int和long类型,一般建议:long类型的初始值后加L或l。
  3. Java的boolean类型的int不能相互转换,不存在1表示true,0表示false这样的用法。

3.基本类型之间的转换

Java中有自动类型转换(隐式)和强制类型转换(显式)两种

  1. 自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点: 数据范围小的转为数 据范围大的时会自动进行
  2. 强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。
    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类型,在进行运算。

4.基本数据类型转引用数据类型(包装类)

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;//这种包装类转化为基本数据类型的过程被称为自动拆箱。

5.字符串类型与基本数据类型之间的转换

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中运算符大概可以分为五种,算术运算符,关系运算符,逻辑运算符,位运算符和条件运算符。

1.算数运算符

     基本运算:+,-,*,/,%。

     增量运算符:+=,-=,*=,%=。

     自增运算符:++,--。

2.关系运算符

    计算结果为true或false:==,!=,<,>,<=,>=。

3.逻辑运算符

三个逻辑运算符:&&,||,!。

需要注意,&&和||遵守短路求值的规则。

System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true

即: 

对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.

对于 ||, 如果 左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式 .

4.位运算符

这些运算符都是针对数字的二进制位进行运算:

&按位与,|按位或,~按位取反,^按位异或,<<左移运算符,>>右移运算符,>>>无符号右移。

tips:

如果两个数相同,则异或的结果是0

5.条件运算符(三目运算符)

表达式1:表达式2?表达式3

表达式 1 的值为 true , 整个表达式的值为 表达式 2 的值 ;
表达式 1 的值为 false , 整个表达式的值为 表达式 3 的值 .

五.逻辑控制语句

在这个环节我会向大家介绍一下java中常见的选择语句,循环语句,并用这些语句为大家提供一个经典的猜数字游戏(含代码和运行结果)。

1.选择语句

       java中常用的选择语句即if语句和Switch语句。
if语句有三种语法形态,即if(){},if(){}else{},和if(){}else if(){}else{}。下面是代码演示:
//第一种形式
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语句的执行流程:

1. 先计算表达式的值
2. case 依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到 break 时结束
3. 当表达式的值没有与所列项匹配时,执行 default
下面是代码演示:
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;

2.循环语句

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;语句的作用的跳过这次循环,立即进入下次循环,希望大家不要搞错哦。

3.猜数字游戏(带源码实现)

看到这里的小伙伴们已经很棒了,我们已经可以用学过的知识去实现一个简单的猜数字小游戏了,大家可以先自己尝试在看源码哦。

题目:

系统自动生成一个随机整数 (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系统流。
}
}

点关注,不迷路!下期更新不会断。

你可能感兴趣的:(java,开发语言,jvm,学习)