一. 初识Java
1. 计算机简介
- 计算机的组成
- 硬件 :
- 看得见摸得着
- 中央处理器(cpu) : 运算器和控制器
- 存储器 : 内存(内存条) , 外存(SDD固态硬盘,HSD混合硬盘,HDD机械硬盘,U盘,M.2)
- 输入设备 : 键盘,鼠标
- 输出设备 : 显示器
- 软件
- 能在计算机上运行的程序
- 系统软件 : Windows操作系统,Mac操作系统,Linux操作系统
- 应用软件 : 程序员开发的软件 (微信,QQ…)
- 硬件 :
- 语言简介
- 人与人之间进行交互的一个载体和方式
- 计算机语言
- 机器语言 : 二进制0,1,所有指令都是由0,1组成
- 汇编语言 : 由一些简单的字母来表示二进制序列(0,1)
- ADD表示加法
- 优点 : 文件小,执行速度快,可以直接操作计算机的硬件
- 缺点 : 可读性,可移植性较差,对程序员来说门槛比较高
- 高级语言 : 由一些纯英文字母(包含大小写和一些特殊符号)组成
- 例如 : +表示加法
- 优点 : 语法相对简单,兼容性比较强,对程序员来说门槛较低
- 缺点 : 种类繁多,每种语言都有自己的语法,每学习一门语言都需要重新学习新的语法
- 高级语言的分类
- 第一代高级语言 : 例如C语言,以面向过程为编程基础,唯一一门可以直接操作计算机硬件的高级语言
- 第二代高级语言 : C++,以面向对象为编程基础,没有默认的垃圾回收机制
- 第三代高级语言 : 例如java,C#,以面向对象为编程基础,有垃圾回收机制(GC)
- 第四代高级语言 : 未来的发展趋势,现在还处于发展初期 ( 以面向问题编程思想为主,例大数据云平台 )
2. java的语言特点
- 简介
- 使用广泛,简单易学
- java是一门强类型语言
- 有完善的异常处理机制
- java提供了对大数据的基础性的支持
- 概述
- Sun公司在1995年退出的高级编程语言 ( 开源 )
- java之父—James Gosling(詹姆斯.高斯林)
- Sun公司在2009年被甲骨文公司Oracle收购
- 平台版本
- J2SE : 标准版,是其他两个版本的基础
- J2ME : 小型版,一般用来开发嵌入式的程序,基本已经被Android代替了
- J2EE : 企业版,一般开发企业级的互联网程序
- 特点
- 开源 : java的源代码是开放的
- 跨平台 : 用java代码编写的程序,可以在不同的操作系统上运行
- JVM保证java程序的跨平台,JVM本身是不能跨平台的
- 多线程
- 面向对象
- 多态
3. JDK,JRE下载安装
- JDK概述
- JDK : java开发工具包,里面包含开发工具和JRE
- 常用开发工具javac,java
- JRE : java的运行环境,包含运行java程序所需要的核心类库和JVM
- 核心类库:java.lang , java.util , java.io
- JVM : java虚拟机
- 用来保证Java程序跨平台性的,但JVM本身不能跨平台
- JDK : java开发工具包,里面包含开发工具和JRE
- java环境搭建
- JDK下载
- 官网
- jdk-8u112-windows-x64
- 安装路径不要有中文,空格,特殊符号
- JDK卸载
- 控制面板卸载
- win + r -------- control
- JDK下载
- 目录解析
- bin 存放的是编译器和工具
- include 编译本地方法
- jre java运行时的文件
- lib 存放类库
- src.zip 存放原代码
4. 配置环境变量
- 任意目录下都能使用JDK提供的常用开发工具,如java,javac
- 高级系统设置—环境变量—新建系统变量—变量名:JAVA_HOME—变量值:安装路径(不带bin)
- 编辑—新建—%JAVA_HOME%\bin
- 测试 : 在DOS窗口,输入java或javac会看到一些指令
5. 案例:HelloWord
-
常用开发工具
- windows自带的记事本
- 没有行号,关键字不能高亮显示,代码不能折叠
- 高级记事本notepad++,editplus
- 有行号,关键字可以高亮,代码可以折叠
- 不方便调试,不适合大型的开发项目
- 集成的开发工具IDE
- 集成的开发工具:集代码的编写,编译,运行,调试,重构等一系列功能于一体的软件
- 常用IDE ( Eclipse,MyEclipse,IDEA)
- windows自带的记事本
-
程序的开发步骤
- 编写
- 编写源代码,后缀名.JAVA
- 编译
- 相当于把我们能看懂的文件,转换为计算机能看懂的文件,通过javac指令来实现
- HelloWorld.java(源文件)—HelloWorld.class(字节码文件,专门给计算机看到)
- 执行
- 让计算机来运行指定的字节码文件,通过java指令实现
- 编写
-
编写代码
-
创建一个HelloWorld.java文件
-
用记事本打开
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World"); } } // 有可能出现的bug 1.在电脑系统或程序中隐藏着未被发现的缺陷或问题,统称为bug漏洞 2.解决方案 多看多思考,多尝试,多总结 3.遇到问题 非法字符(注意使用的符号,全部都是英文状态下的) 字母大小写(严格区分大小写,Main和main不是一回事儿) 文件后缀名(不要出现HelloWorld.java.txt) 编译或运行指令出错 文件名和第一行代码class后的单词要一致
-
-
编译 javac HelloWorld.java
-
执行 java HelloWorld
6. IDEA下载安装
7.java语法
-
注释
- 就是用来对程序进行解释和说明的文字
- 单行注释 //要注释的内容
- 多行注释 /* 要注释的内容 */
- 文档注释 /** 内容 */
-
关键字
- 被java语言赋予了特殊含义的单词
- 纯英文字母组成,而且全都是小写
- 开发工具可以高亮显示
- 常用
- public 公共的权限
- class 创建一个类
- static 表示静态
- void 表示方法的返回值类型
-
java源代码的标准格式
public class 类名{ public static void main(String[] args){ System.out.println("要打印的内容"); } }
二. 变量和数据类型
1. 变量和常量
-
常量
- 自定义常量
- 字面值常量
- 整数常量(1 2 3)
- 小数常量(3.1415926)
- 字符常量(单引号引起来,只能是一个值 ‘a’)
- 字符串常量(双引号引起来,可以是一个或多个 “abc”)
- 布尔常量(true,false)
- 空常量(null,不能通过输出语句打印)
-
变量
- 在程序的执行过程中,其值在某个范围内发生变化的量就叫做变量
- java一个变量每次只能保存一个数据,而且必须要明确保存数据的类型
- 数据类型 : 变量变化的范围,就是数据类型
- 变量名 : 每个变量都有一个名字,方便存取
- 初始化值 : 变量在使用之前必须要先赋值
//练习 输出个人信息 package com.kgc01; public class demo01 { public static void main(String[] args) { String name = "小明"; int age = 22; double hight = 1.81; System.out.println("姓名:" + name); System.out.println("年龄:" + age); System.out.println("身高:" + hight); } }
2. 数据类型
强类型语言,针对每一个数据都要给出明确的数据类型
-
基本数据类型
类型 字节大小 范围 byte(字节型) 1个字节 -128 ~127 short(短整型) 2个字节 -32768~32767 char(字符型) 2个字节 -128~127 int(整型) 4个字节 -2147483648~2147483647 long(长整型) 8个字节 -2147483648~2147483647 float(单精度浮点型) 8个字节 1.17549 * 10^(-38) ~ 3.40282 * 10^(38) double(双精度浮点型) 8个字节 2.22507 * 10^(-308) ~ 1.79769 * 10^(308) boolean(布尔型) 1个字节 true,false -
引用数据类型
String(字符串类型) , 数组 , 类 , 接口
-
常用类型
类型 范围 byte类型 -128 ~127 char类型 0 ~ 65535 - 默认的整型是int类型
- 默认的浮点类型(小数)double类型
- 定义long类型时,数据后面加字母L或l,建议L
- 定义float类型时,数据后面加字母F或f,建议F
-
变量定义
- 声明变量并赋值
- int age = 18;
- 先声明后赋值
- int age;
- age = 18;
- 声明变量并赋值
-
命名规则
- 标识符(就是用来给类,接口,方法,变量,包起名的规则)
- 标识符的命名规则
- 英文字母,数字,下划线
- 数字不能开头
- 不能和关键字重名
- 见名知意 name,age
- 类,接口
- 大驼峰,每个单词首字母大写 MaxAge
- 变量名
- 小驼峰,第一个单词首字母小写,其他单词首字母大写 maxAge
- 常量
- 所有字母全部大写,多单词之间用下划线分割 MAX_AGE
- 包
- 所有字母全都小写,多级包之间用.分割,一般都是用公司域名反写
-
数据类型转换
-
不同类型的数据有可能进行运算,而这些数据的取值范围不同,存储方式不同,直接计算可能会造成数据损失,需要将一种类型转换为另一种类型进行运算
-
自动类型转换(隐式的)
- 小类型转换大类型,自动提升为大类型,运算结果也为大类型
- 将取值范围小的类型自动提升为取值范围大的类型
- byte,short,char运算时转换为int
- 布尔类型不能参加运算
- byte,short,char --> int --> long --> float --> double
-
强制类型转换(显式的)
-
手动将大类型的转换为小类型,运算结果是小类型
-
将取值范围大的类型强制转换为取值范围小的类型
-
数据类型 变量名 = (数据类型) 要被转换的数据值
int g; double b; int g = (int)b; System.out.println(g); short s =11; s=(short)(s+3); System.out.println();
-
-
3. 运算符
-
用来连接常量或变量之间的符号,叫运算符
-
用运算符把常量或变量连接起来的,符合java语法的式子就叫表达式
-
+加号 ,算术运算符
-
a+b 表达式,算术表达式
-
分类
运算符 符号 算术运算符 + , - , * , / , % , ++ , – 赋值运算符 = , += , -= , *= , /= , %= 比较(关系)运算符 == , != , < , > , <= , >= 逻辑运算符 &与 , |或 , !非 , ^异或(相同为false,不同为true) 三元(目)运算符 (关系表达式) ? 表达式1 : 表达式2 - 独立运算,前++和后++没有区别
- 混合运算,前++和后++不同
- 短路逻辑运算符 : && , ||
- 三目运算符 : 判断表达式true执行表达式1,false执行表达式2
package com.kgc01; public class demo02 { public static void main(String[] args) { // +可以用于连接 System.out.println("5+5="+5+5); System.out.println("5+5="+(5+5)); // ++a,变量a自加1,在赋值给b int a =1; int b = ++a; System.out.println(a); System.out.println(b); // c++,先将值赋给d,变量c在自加1 int c =1; int d = c++; System.out.println(c); System.out.println(d); short s =11; //s=s+1; 是两个运算符,需要两次 s+=1; //一个运算符,运算一次带强制转换 System.out.println(s); //通过三元运算符,获取a和b的最大值 int a=10,b=20; int max= a<b ? b:a; System.out.println(max); } }