Java基础

文章目录

  • Java基础
      • 1.安装环境
      • 2.Java的由来
      • 3.Java的特点
      • 4.Java能做什么
      • 5.Java不同的版本
      • 6.Java常见关键词
      • 7.Java程序的运行步骤
      • 8.Java程序
      • 9.Java基本语法
      • 10.Java命名规范
      • 11.Java定义变量
      • 12.运算符号
      • 13.Scanner对象
      • 14.选择结构
      • 15.循环结构※
      • 16.debug模式
      • 17.多重循环

1.安装环境

  • java环境变量配置

    1. 配置JAVA_HOME: JDK安装位置

    2. 配置ClassPath: 项目的根目录

      .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

    3. 追加Path:

      %JAVA_HOME%\bin
      %JAVA_HOME%\jre\bin

    4. 检测 通过cmd输入 java -version或者javac -version

2.Java的由来

sun公司1991研发的一套语言,早期叫做橡树(Oak) ,Jame Gosling 詹姆斯·高斯林 Java之父带领工程师在印度尼西亚 爪哇岛喝咖啡,1995年正式更名为Java,图标为热咖啡,2009年 sun公司被Oracle收购

3.Java的特点

Java是一门面向对象为核心,支持高并发,多线程的跨平台,强类型高级编程语言

  • 面向对象
    • 通过类和对象的方式进行编程,更加符合人的思维,适合大型项目
  • 多线程
    • 可以同时处理很多任务
  • 跨平台
    • 跨越操作系统,win8 win10 win11 ios mac android都可以运行
  • 强类型
    • 对类型要求严格,先声明类型才可以赋值,值和类型需一致

4.Java能做什么

  1. 网站
    • 大型商业网站
      • 京东
      • 淘宝
      • 小米
  2. 系统
    • 办公系统
  3. 移动端
    • 安卓,javame
  4. 游戏
    • Minecraft

5.Java不同的版本

  • JavaSE:标准版 Java基础核心
    • 变量,数组,循环,集合,对象,IO
  • JavaEE:企业版 包含企业开发的完整方案
    • jsp servlet jdbc 框架
  • JavaME:简化版
    • 立足家电方向,移动端

6.Java常见关键词

  • jdk:Java开发工具包 包含jre
  • jre:Java运行环境包 包含jvm
  • jvm:Java虚拟机 编译,运行程序,跨平台核心
  • javaApi:Java核心类库 精通Java学习的工具

7.Java程序的运行步骤

  1. 编写源程序 xx.java

  2. 编译源程序 xx.class

    生成字节码文件 计算机只能识别字节码文件
    javac xx.java => xx.class
    javac 可以生成多个class

  3. 运行程序

    java xx.class

注:main(参数)==>String[] 表示运行时的参数
java Test name zhangsan password 123
运行时String[] args包含以上四个值

8.Java程序

package day1;

// 公开的 类 类名:公开类的类名必须和文件名一致,否则报错
// 公开类只能有一个
public class Test {
    // 程序的入口
    // 公开的 静态的  无返回值类型的 入口固定方法名称(参数){
    //      程序代码
    // }
    public   static void        main         (String[] args) {
        // 在控制台打印一句话
        System.out.print("Hello world!");
        System.out.print("Hello 输出第二句话!");
    }
}

// 普通类,可以有多个
class A {
}
class B {

}

9.Java基本语法

// java所有语法都是以类为单位
// 公开的  类    类名
public class 类名{ // 类的开始
    // 入口 程序运行入口
    公开的   静态的  无返回值
    publica static void main(String[] args){ // 方法的开始
        java代码 ; // 每行分号结束
    } // 方法的结束
} // 类的结束

10.Java命名规范

// Java定义任何东西不使用中文

  • 类名
    • 首字母大写
    • 数字不能开头
    • 如果是公开类,需和文件名一致
    • 每个java文件有且只有一个公开类
  • 变量名
    • 由字母,数字,下划线,$构成
    • 首字母小写
    • 后面单词首字母大写,驼峰结构
    • 数字不能开头
  • 方法名
    • 要求类似变量名
  • 不能使用Java关键字命名
    • 48个关键字:
      • abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while
    • 2个保留字(现在没用以后可能用到作为关键字):
      • goto、const
    • 3个特殊直接量:
      • true、false、null

11.Java定义变量

  • 变量
    用于存储定义数据,类似于房间
    房间类型 房间号码 入住

  • 语法结构:
    数据类型 变量名 = 值

  • Java的基本数据类型:

    • ​ 整数(整形)4种
      • byte 1字节 8位 -27-27-1(-128-127)
      • short 2字节 16位 -215-215-1(-32768-32767)
      • int 4字节 32位 -231-231-1(-2147483648-2147483647)
      • long 8字节 64位 -263-263-1(-9223372036854775808-9223372036854775807)
    • ​ 小数(浮点型)2种
      • float 单精度 4字节
      • double 双精度 8字节
    • ​ 特殊:2种
      • boolean 布尔类型 两个值 true/false 真/假
      • char 字符类型 只能存储单个字符 ‘A’ ,‘+’
  • String 字符串类型 可以放字符串 “abcABC”

  • 自动类型转换(类型提升)

    • 小范围赋值给大范围变量时会进行自动类型提升
      • byte->short->int->long
      • char->int
      • float->double
    • 当运算过程中出现不同类型,运算结果的类型将自动转换为范围最大的类型
      • 三元运算符中,返回值会自动类型提升为表达式中范围最大类型
  • 强制类型转换:大范围转换小范围数据 Java默认不允许

    • 但是通过强制类型转换可以进行转换
      • 语法:int i = (int) 15.5;

char类型可以自动类型提升转换成int类型,会以ASCII码的形式存储十进制ASCII码

12.运算符号

  • 赋值运算符:=
  • 数学运算符:+,-,*,/,%,++,–
  • 比较运算符:<,>,==,>=,<=
  • 逻辑运算符:&&(与),||(或),!(非),&,^

&&和&的区别
// && 具有短路功能 如果前面条件1不满足,条件2不会执行
// & 不具有短路功能 无论条件1是否满足,条件2也会执行

13.Scanner对象

Scanner对象用户获取控制台输入数据,底层是利用io流(系统输入流) System.in

使用步骤:

  1. 创建Scanner对象
    • Scanner sc = new Scanner(System.in);
  2. 利用Scanner对象自带的方法 nextXX();、
    • a.获取字符串数据 对象名.next();
    • b.获取整型数据 对象名.nextInt();
    • c.获取浮点型 对象名.next.Double();
  • 如果用户输入非法数据,程序异常,Scanner提供了第三种方法判断数据合法性
    对象名.hasNextXX();
    返回布尔类型
    eg:hasNextInt() hasNextDouble()

String str.charAt()返回字符串索引位置的字符

14.选择结构

选择结构:根据指定条件 执行指定的代码内容

  • 第一种:if

    • 语法1:

      if(条件){
      		如果条件成立执行 代码
      }
      
    • 语法2:

      if(条件){
      		代码1	// 条件成立 执行
      } else {
      		代码2	// 条件不成立 执行
      }
      
    • 语法3:

      if(条件1){
      		代码1	// 条件1成立 执行
      } else if (条件2){
      		代码2	// 条件1不成立,条件2成立 执行
      }...
      	else if(条件n){
      		代码n	// 条件1 - n-1不成立,条件2成立 执行
      } else {
      		代码	// 条件1 - n不成立 执行
      }
      
  • 第二种:switch

    • 当需要多重分支而且条件判断是等值判断

    • switch(表达式){
      		case 1: 代码1; break;
      		case 2: 代码2; break;
      		...
      		default: 其他代码;
      } 
      

      注:当表达式=1进入 case 1,=2进入 case 2,否则进入 default break 表示跳出 switch

  • 第三种:三目运算符

    • 表达式?表达式1:表达式2

      表达式为真返回表达式1的值,为假返回表达式2的值

      注:如果表达式1,2返回值类型不同,则返回值是范围更大的那个

      eg:false?double:int

      返回值为 double 类型

总结: if 一般适合区间判断 类似于 > < switch一般适合等值判断 case 1 case 2

  • switch 支持哪些类型
    • 支持 byte short int char 等可以隐式转换成整型的类型
    • jdk 1.7 及以后 还支持 String 类型
    • switch 还支持枚举类型

15.循环结构※

  • 什么时候需要循环:

    • 程序执行过程中 是否有很多相同内容需要执行很多次 而且有结束出口
    • eg:打印二十份试卷 打印1份试卷 打印二十次
    • 围绕操场跑10000米 每次一圈400米 达到10000米结束
    • 重点:循环条件,循环操作
  • Java中的循环

    • while循环

    • 执行规则:先判断再执行,直到判断条件为假

    • while(判断条件){
      	循环体
      }	
      
  • do-while循环

    • 执行规则:先执行,再判断,直到判断条件为假,退出循环

    • do{
         循环体
      }while(判断条件)
      
  • break 表示跳出当前循环

  • continue 表示本次循环结束 进行下一次

实现跳出多重循环

  • System.exit(0) 正常退出

  • System.exit(1) 异常退出

    表示跳出jvm虚拟机 bug:循环外有代码不执行

  • return 表示结束当前方法 bug:循环外有代码不执行

  • 可以通过给循环标记

    • 想退出 break 标记;

    • one:
      while(){
          two:
          while(){
              while(){
      			break one;	// 表示退出到one位置
              }
          }
      }
      

random.nextInt(MAX - MIN + 1) + MIN; MIN-MAX 的随机数

16.debug模式

可以用于调试程序,观察每一步执行过程,也是程序调错的有效方式

  • 使用方式:

    1. 先设置断点(代码区域 行号附近点击)

      • 表示程序从哪个位置进行调试
    2. 单机甲壳虫 开启debug模式 进入debug界面
      3. 熟练使用快捷键一步一步操作

      • F8(单步跳过),一行一行执行 如果遇到方法不会进入
      • F7(单步跳入),一步步执行 如果遇到方法 进入方法内部 继续执行内部方法
    3. 观察下面变量的改变情况

17.多重循环

循环里面可以再嵌套其他循环,类似提高了维度

eg:二重for
for(){	---外层循环
	for(){	---内层循环
	}
}