Java基础+流程控制+方法+数组【笔记含代码】

文章目录

  • 什么是计算机
    • 计算机硬件
    • 计算机软件
    • DOS命令
  • 计算机语言发展史
    • 第一代语言
    • 第二代语言
    • 第三代语言
  • Java帝国的诞生
    • C & C++
    • 反抗
    • Java初生
    • Java发展
    • Java特性和优势
    • Java三大版本
  • JDK、JRE、JVM
    • Java开发环境搭建
    • Java程序运行机制
  • Java基础语法
    • 注释
    • 标识符
    • 标识符注意点
    • 数据类型
    • 什么是字节
    • 数据类型扩展
    • 类型转换
    • 变量
    • 变量作用域
    • 常量
    • 变量的命名规范
    • 运算符
    • 包机制
    • JavaDoc
  • Java流程控制
    • Scanner对象
    • 顺序结构
    • 选择结构
      • if单选择结构
      • if双选择结构
      • if多选择结构
      • 嵌套的if结构
      • switch多选择结构
    • 循环结构
      • while循环
      • do...while 循环
      • for循环
      • 增强for循环
    • break continue
    • 流程控制练习
  • Java方法详解
    • 什么是方法?
    • 方法的定义
    • 方法调用
    • 方法的重载
    • 命令行传参
    • 可变参数
    • 递归
    • 作业
  • 数组
    • 数组的定义
    • 数组声明创建
    • 内存分析
    • 三种初始化
    • 数组的四个基本特点
    • 数组边界
    • 数组的使用
    • 多维数组
    • Arrays类
    • 冒泡排序
    • 稀疏数组
    • 稀疏数组介绍


什么是计算机

  • Computer:全称电子计算机,俗称电脑。
  • 能够按照 程序 运行,自动、高速处理海量数据的现代化智能电子设备。
  • 硬件软件 所组成
  • 常见的形式有台式计算机。笔记本计算机、大型计算机等。
  • 广泛应用在:科学计算,数据处理,自动控制,计算机辅助设计,人工智能,网络等领域

计算机硬件

  • 一些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。
  • 计算机硬件组成
    • CPU
    • 主板
    • 内存
    • 电源、主机箱
    • 硬盘
    • 显卡
    • 键盘、鼠标
    • 显示器
    • 等…

计算机软件

  • 计算机软件可以使计算机按照事先预定好的顺序完成特定的功能
  • 计算机软件按照其功能划分为 系统软件应用软件
  • 系统软件:
  • DOS(Disk Operating System),Windows,Linux,Mac,Android,iOS
  • 应用软件
  • WPS,QQ,微信,英雄联盟,绝地求生…
  • 软件、开发、软件开发
  • 人机交互(图形化界面,命令行)

DOS命令

  • 常见DOS命令
    • 盘符切换 - C:
    • 查看当前目录下的所有文件 - dir
    • 切换目录 - cd (change directory)
    • 创建目录文件 - md
    • 清理屏幕 - cls(clear screen)
    • 删除文件 - del
    • 删除文件夹 - rd
    • 退出终端 - exit
    • 查看电脑的IP - ipconfig
    • ping命令 - ping www.baidu.com
    • calc 计算器
    • mspaint 画图
    • notepad 记事本

计算机语言发展史

第一代语言

  • 机器语言
    • 我们都知道计算机的基本计算方式都是基于二进制的方式。
    • 二进制:010111001010110010110100
    • 这种代码是直接输入给计算机使用的,不经过任何的转换!

第二代语言

  • 汇编语言
    • 解决人类无法读机器语言的问题
    • 指令代替二进制
  • 目前应用:
    • 逆向工程
    • 机器人
    • 病毒
codesg seqment
	start:
		mov ax, 0123h		; 寄存器送入值
		mov bx, 0457h		
		add ax, bx			; ax + bx 寄存器值相加
		add ax, ax			; 算 ax 的平方

	mov ax, 4c00h
	int 21h						; 程序结束返回
codesg ends 
end start 						; 指定程序入口标号为 start	

第三代语言

  • 摩尔定律
  • 当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18个月翻两倍以上

  • 高级语言
  • 大体上分为:面向过程和面向对象两大类。
  • C语言是典型的面向过程的语言。C++、JAVA是典型的面向对象的语言。

  • 聊聊各种语言:
    • C语言
    • C++语言
    • JAVA语言
    • C#语言
    • Python、PHP、JavaScript

Java帝国的诞生

C & C++

  • 1972年C诞生
    • 贴近硬件,运行极快,效率极高
    • 操作系统,编译器,数据库,网络系统等
    • 指针和内存管理
  • 1982年C++诞生
    • 面向对象
    • 兼容C
    • 图形领域、游戏等

反抗

  • 我们要建立一个新的语言:
    • 语法有点像C
    • 没有指针
    • 没有内存管理
    • 真正的可移植性,编写一次,到处运行
    • 面向对象
    • 类型安全
    • 高质量的类库

Java初生

  • 1995年的网页简单而枯燥,缺乏互动性。
  • 图形界面的程序(Applet)

  • Bill Gates说:这是迄今为止设计的最好的语言!

  • Java 2 标准版(J2SE):去占领桌面
  • Java 2 移动版(J2ME):去占领手机
  • Java 2 企业版(J2EE):去占领服务器

  • 大量的巨头加入

Java发展

Java 三高 ,高并发 ,高可用 ,高性能

  • 他们基于Java开发了巨多的平台,系统,工具
    • 构建工具:Ant,Maven,Jekins
    • 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
    • Web开发:Struts,Spring,Hibernate,myBatis
    • 开发工具:Eclipse,Netbean,intellij idea,Jbuilder


  • 2006:Hadoop(大数据领域)
  • 2008:Android(手机端)

  • 一个伟大的帝国诞生了!

Java特性和优势

  • 简单性
  • 面向对象
  • 可移植性
  • 高性能
  • 分布式
  • 动态性
  • 多线程
  • 安全性
  • 健壮性
  • 思考:Java为什么能够成功

Java三大版本

  • Write Once、Run Anywhere
  • JavaSE:标准版(桌面程序,控制台开发…)
  • JavaME:嵌入式开发(手机,小家电…)
  • JavaEE:E企业级开发(web端,服务器开发…)

JDK、JRE、JVM

  • JDK:Java Development Kit
  • JRE:Java Runtime Environment
  • JVM:JAVA Virtual Machine

Java开发环境搭建

  • 安装JDK

    • 百度搜索JDK8,找到下载地址
    • 同意协议
    • 下载电脑对应的版本
    • 双击安装JDK
    • 记住安装的路径
    • 配置环境变量
      • 我的电脑 - 右键 - 属性
      • 环境变量 - JAVA_HOME
      • 配置path变量
        Java基础+流程控制+方法+数组【笔记含代码】_第1张图片
    • 测试JDK是否安装成功
      • 打开cmd
      • java -version
        Java基础+流程控制+方法+数组【笔记含代码】_第2张图片
  • 卸载JDK

    • 删除Java的安装目录
    • 删除JAVA_HOME
    • 删除path下关于Java的目录
    • java -version
  • HelloWorld

    • 随便新建一个文件夹,存放代码
    • 新建一个Java文件
      • 文件后缀名为.java
      • Hello.java
      • 编写代码
      public class Hello {
             
         public static void main(String[] args) {
             
         	System.out.print("Hello World!");
         }
      }
      
      • 编译javac java文件,回生成一个class文件
      • 运行class文件,java class文件
        Java基础+流程控制+方法+数组【笔记含代码】_第3张图片

Java程序运行机制

  • 编译型
  • 解释型
  • 程序运行机制
    • 源程序(*.java文件)- Java编译器 - 字节码( *.class文件)- 类装载器 - 字节码校验器 - 解释器 - 操作系统平台

Java基础语法

  • 注释、标识符、关键字
  • 数据类型
  • 类型转换
  • 变量、常量
  • 运算符
  • 包机制、JavaDoc

注释

  • 平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
  • 注释并不会被执行,是给我们写代码的人看的
  • 书写注释是一个非常好的习惯
  • Java中的注释有三种:
    • 单行注释 //
    • 多行注释 /* */
    • 文档注释

标识符

  • 关键字
abstract assert boolean break byte
case cath char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
  • Java所有的组成部分都需要名字。类名、变量以及方法名都被称为标识符

标识符注意点

  • 所有的标识符都应该以字母( A-Z 或者 a-z ),美元符( $ ),或者下划线( _ )开始
  • 首字符之后可以是字母( A-Z 或者 a-z ),美元符( $ ),或者下划线( _ )或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名。
  • 标识符是 大小写敏感的
  • 合法标识符举例:age,$salary,_value,_1_value
  • 非法标识符举例:123abc,-salary,#abc
  • 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很low

数据类型

  • 强类型语言
    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
  • 弱类型语言
  • Java的数据类型分为两大类
    • 基本类型(primitive types)
      Java基础+流程控制+方法+数组【笔记含代码】_第4张图片
    • 引用类型(reference type)
      Java基础+流程控制+方法+数组【笔记含代码】_第5张图片

什么是字节

  • 位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。
  • 字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示。
  • 1B(byte,字节)= 8bit(位)
  • 字符:是指计算机中使用的字母,数字,字和符号

  • 1bit表示1位
  • 1byte表示一个字节 1B=8b
  • 1024B = 1KB
  • 1024KB = 1M
  • 1024M = 1G

数据类型扩展

// 整数 进制:二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010; // 八进制
int i3 = 0x10; // 十六进制 0~9 A-F
System.out.println(i); // 10
System.out.println(i2); // 8
System.out.println(i3); // 16

// 浮点数 银行业务怎么表示?钱
// BigDecimal 数学工具类
// flaot 有限 离散 舍入误差 大约 接近但不等于
float f = 0.1f;
double d = 1.0 / 10;
System.out.println(f == d); // false
System.out.println(f); // 0.1
System.out.println(d); // 0.1

float f1 = 12312312312312f;
float f2 = f1 + 1;
System.out.println(f1 == f2); // true

// 字符
char c1 = 'a';
char c2 = '中';
System.out.println(c1); // a
System.out.println(c2); // 中
System.out.println((int) c1); // 97
System.out.println((int) c2); // 20013

// 所有的字符本质还是数字
// 编码 Unicode表:97 = a 2字节 0 - 65536 Excel(2的16次方 = 65536)

// U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3); // a

// 转义字符
System.out.println("Hello\tWorld"); // Hello World

String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb); // false

String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd); // true

// 布尔值
boolean flag = true;
if(flag == true) {
   } // 新手
if(flag) {
   } // 老手 Less is More! 代码要精简易读

类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
  • byte,short,char -> int -> long -> float -> double
  • 运算中,不同类型的数据先转化为同一类型,然后进行运算。
  • 强制类型转换
  • 自动类型转换
int i = 128;
byte b = (byte) i; // 内存溢出
// 强制转换 (类型)变量名 高--低
// 自动转换 低--高
System.out.println(i); // 128
System.out.println(b); // -128

/*
 * 注意点: 
 * 1. 不能对布尔值进行转换 
 * 2. 不能把对象类型转换为不相干的类型 
 * 3. 在把高容量转换到低容量的时候,强制转换 
 * 4. 转换的时候可能存在内存溢出,或者精度问题!
 */

System.out.println((int) 23.7); // 23
System.out.println((int) -45.89f); // -45

char c = 'a';
int d = c + 1;
System.out.println(d); // 98
System.out.println((char) d); // b

// 操作比较大的数的时候,注意处问题
// JDK7新特性 数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money); // 1000000000
int years = 20;
int total = money * years;
System.out.println(total); // -1474836480 计算的时候溢出了
long total2 = money * years; // 默认是int,转换之前已经存在问题了
System.out.println(total2); // -1474836480
long total3 = money * ((long) years); // 先把一个数转换为long
System.out.println(total3); // 20000000000

变量

  • 变量是什么:就是可以变化的量!
  • Java是一种强类型语言,每个变量都必须声明其类型。
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和 作用域
type varName = value;
// 数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。
  • 注意事项:
    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
    • 变量名必须是合法的标识符。
    • 变量声明是一条完整的语句,因此每一个声明都必须已分号结束

变量作用域

  • 类变量
  • 实例变量
  • 局部变量
public class Variable {
   
	static int allClicks = 0; // 类变量
	String str = "hello world"; // 实例变量
	
	public void method() {
   
		int i = 0; // 局部变量
	}
}
public class DBOperate {
   
	// 类变量 static
	static double salary = 25000;
	// 属性:变量

	// 实例变量:从属于对象 如果不自行初始化,这个类型的默认值 0 0.0
	// 布尔值:默认是false
	// 除了基本类型:其余的默认值都是null
	String name;
	int age;

	// main方法
	public static void main(String[] args) {
   

		// 局部变量:必须声明和初始化值
		int i = 10;
		System.out.println(i); // 10

		// 变量类型 变量名字 = new DBOperate();
		DBOperate DBOperate = new DBOperate();
		System.out.println(DBOperate.age); // 0
		System.out.println(DBOperate.name); // null

		// 类变量 static
		System.out.println(salary); // 25000.0
	}

	// 其他方法
	public void add() {
   
		// System.out.println(i);
	}
}

常量

  • 常量(Constant):初始化(initialize)后不能再改变的值。
  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名 =;
final double PI = 3.14;
  • 常量名一般使用大写字符。
// 修饰符:不存在先后顺序
static final double PI = 3.14;

public static void main(String[] args) {
   
	System.out.println(PI); // 3.14
}

变量的命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写 lastName
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

运算符

  • Java语言支持如下运算符:优先级()
    • 算术运算符:+,-,*,/,%,++,–
    • 赋值运算符:=
    • 关系运算符:>,<,>=,<=,==,!=,instanceof
    • 逻辑运算符:&&,||,!
    • 位运算符:&,|,^,~,>>,<<,>>>(了解)
    • 条件运算符:? :
    • 扩展赋值运算符:+=,-=,*=,/=
// 二元运算符
int a = 10;
int b = 20;
System.out.println(a + b); // 30
System.out.println(a - b); // -10
System.out.println(a * b); // 200
System.out.println(a / (double) b); // 0.5

long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a + b + c + d); // long
System.out.println(b + c + d); // int 
System.out.println(c + d); // int

// 关系运算符返回的结构:正确,错误 布尔值
// if
int a = 10;
int b = 20;
int c = 21;
// 取余,模运算
System.out.println(c % a); // c/a 21/10=2...1
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println(a == b); // false
System.out.println(a != b); // true

// ++ -- 自增 自减 一元运算符
int a = 3;
int b = a++; // 执行完这行代码后,先给b赋值,再自增
int c = ++a; // 执行完这行代码前,先自增,再给b赋值
System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5
// 幂运算 2^3 2*2*2 = 8 很多运算,我们会使用一些工具类操作
double pow = Math.pow(2, 3);
System.out.println(pow); // 8.0

// 逻辑运算符
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a && b)); // 逻辑与运算:两个变量都为真,结果为true
System.out.println("a || b:" 

你可能感兴趣的:(java)