一、Java简介
1.Java名字的来源
Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)等。最初被命名为Oak,之后以Java命名,被Oracle(甲骨文)收购。
2.计算机程序
为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,编写程序的语言就是计算机语言,所以Java也是一门计算机语言。
3.Java技术平台分为三个业务方向
JavaSE(Java标准版):是Java的核心,主要用于开发桌面应用程序,例如超市收银系统
JavaEE(Java企业版):提供企业级应用开发的完整方案,很多的网站都是采用Java EE技术开发
JavaME(Java移动版):机顶盒等移动设备
4.Java特性
面向对象(oop),跨平台,gc(垃圾自动回收)
5.JAVA的垃圾回收机制
当一个对象没有任何引用时,该对象便会启动垃圾回收器调用finalize方法以配置系统资源或执行相关的清除操作。
二、 Java开发环境
1. JDK(Java Development Kit)
是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)
2.JRE(Java Runtime Environment)
Java运行时环境,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
3.JVM(Java Virtual Machine)(Java跨平台的核心)
Java虚拟机,是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
简单来说就是JDK包含JRE,JRE又包含JVM的关系。
4.Java程序的三步
1.编写源程序(.java)
新建记事本,写入代码,修改记事本文件名(必须和代码的类同名,此处例子为:HelloWorld),后缀为.java
2.编译(javac),生成字节码文件(.class)(只要改了内容就要重新编译)
然后打开DOS命令切换到java文件的位置
输入javac HelloWorld.java 编译Java文件,编译完成后会生成一个.class文件
3.运行.class文件(java)
然后输入java HelloWorld 运行 输出结果 HelloWorld
注意:如果输出语句中有中文会造成乱码,需要这样编译
javac -encoding utf-8 HelloWorld.java 可以解决该问题
运行机制:
我们的源文件是.java文件,它是不能运行的,必须通过javac 编译为.class文件后才能运行。
java命令后面跟的必须是类名,不要再加.class。
这时,Java会寻找对应的.class文件(又叫类文件,字节码文件),找到对应的public类(主类),在主类中找入口方法main方法,找到后,开始从上向下执行main方法中的语句。
5.Java开发规范:
java中类名的首字母建议大写,后边的单词首字母大写
java语法中,所有的标点符号都是英文输入法下
每句代码结束后,以“;”结束
大括号成对出现,一般一个大括号也独占一行
一行只写一条语句
注意代码缩进
6.Java开发规则:
Java严格区分大小写
文件名必须和类名(HelloWorld)一致
main()方法大小写括号不能写错,是Java程序的入口
{}必须是成对出现的
7.IDEA常用操作
创建项目:(点开后选择左上角的Java项目)
在src下建包(Package)和类(Java Class):
类可拖动换位置,放入包中。建包时,有例子:a.b.c,相当于建了一个三层文件夹
创建main快捷:1.输入"main" 2.输入"psvm"
输出快捷:"pout"
8.包(package):
新建包:在src(存放Java源码)下New→package(包) →包名一般为全小写中间.隔开→Finish
package的作用:Java允许把一个或多个类放在一起成为一组,称作为包,以便于更好的管理
package用于声明包(代码第一句) import用于引入包(导包),包也可区分重名
9.其他
1.输出语句
System.out.println(“hello”);会换行 System.out.print(“hello”);不换行
2.转义符
\n换行 \t 一个水平制表位(八个空格)
3.Java程序中的注释
单行注释://注释内容
多行注释:/*
*注释内容
*/
文档注释,可以通过文档注释生成对应的帮助文档:
/**
*@author:ljn
*@version 1.0
*/
注释快捷键:“Ctrl"+"/"
三、变量
数据存放在内存中,内存地址很很难记忆,所以我们使用变量,去获取内存中的数据
标识符(变量名) : 标识符就是用于给程序中的变量、类、方法命名的符号。
1.变量命名规则:
可以包含字母、数字、下划线_、美元符号$
不能以数字开头
不能是Java关键字
规范:见名知意,遵循小驼峰命名法
2.数据类型:
数据类型是为了把数据分成所需内存大小不同的数据,编程的时候按需申请内存,这样可以充分利用内存。 Java语言是一种强类型语言,要求所有变量先声明后使用。
此图中“Boolean"应改为小写“boolean"
3.Java八大基本类型(基本数据类型中的8种):
1.整型:
整型取值范围
Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如:long l = 123L
类型 | 占用存储空间字节数 | 数值范围 |
byte | 1 | -128~127 |
short | 2 | -2的15次方~2的15次方-1(-32768~32767) |
int | 4 | -2的31次方~2的31次方-1 |
long | 8 | -2的63次方~2的63次方-1 |
八进制0开头,十六进制0x开头
进制转换
- 十进制到二进制 (除2取余法,余数逆位输出)
- 二进制到十进制 (二进制数从最右边开始,各位上的数依次乘2的n次方,n从0开始递增)
2.浮点型:
两种表示形式
十进制形式:例如:123.456 0.314
科学计数法:例如:1.23456E2 3.14E-1
(E代表10的几次方 E2:10的2次方 E-1:10的-1次方)
浮点型取值范围
浮点声明默认是double类型,若要是float,请在尾部添加f或是F。如:float myFloat=1.23f
类型 | 占用存储空间字节数 | 数值范围 |
float | 4 | -3.4E38 ~ 3.4E38 |
double | 8 | -1.7E308~ 1.7E308 |
3.字符型:
- 通常意义上的字符,用单个引号括起来的单个字符 ,如'1','a','b'等等
- Java采用Unicode编码(即为全球统一语言编码),均可以用十六进制表示编码值
Unicode中:英文中文都是占两个编码位置(双字节)
转义字符依然是个字符 :char c='\n'; //表示换行符
4.布尔型:
适用于逻辑运算,值只能是true(真)或者false(假)
4.定义变量
- 先声明,后赋值
- 声明的同时赋值
四、常量
1)关键字 final 例子:final int STUDENT_NUM=10;
2)一经定义就不变了
3)常量通常是大写
4)常量不遵循驼峰命名法,多个单词使用下划线“_”隔开
5)常量只能赋值一次,在定义时就要初始化(赋值)
五、键盘接收输入
1.导入包:
import java.util.Scanner;
2.用Scanner新建一个对象,习惯用:input,只需要建一个
Scanner input = new Scanner(System.in);
3.键盘接收,接收的数据类型不同,对应Scanner的方法不同
double score = input .nextDouble();
//input .nextDouble(),这个就是用户输入的内容
int a = input .nextInt();
String c = input .next();
六、类型转换
1.布尔类型不能与其它类型做任何转换
2.自动类型转换
1.只要计算时含有double类型的变量,结果必然是double类型
double d = 10.2;
int i = 2;
double a = d + i ;
2.满足自动类型转换的条件
1>两种数据类型要兼容(数值)
2>目标类型的取值范围要大于源类型的取值范围
3.强制类型转换,容易丢失精度
double d = 12.3;
int i = 2;
//int a = (int)(d + i);
int a = (int)d + i;
4.多类型混合运算
系统会自动转换成统一类型(大容量数据)后再进行计算,即先类型转换后计算