JAVA300集基础

一、JAVA入门与第一个项目

1.0 计算机语言发展史

ce5c1f52284a4ee8851d83c1ae48aed6.png

ef573cea351249dca314ed8cdf690e9a.png

5283b92cca6846ef97fa0cd1d1510235.png

8c07adfb974b4a67bea2331e7ba30ecb.png

2e3bf532da0447b3b6bb1751f484c762.png

02a299a8392040cdb6b61e210f7cb73d.png

053abfd825904f3e92527b4c739b3c40.png

9908af6d84c240f68d40b890c27361f6.png

41b366066d1b42fc988ee94b582df474.png

7fff0600c6d341828e8e7a4edd455224.png

63720755ddb7450d9d3f3050909131bc.png

1.1 java三个版本

javase JAVA标准版,定义为个人计算机的应用。     javaee JAVA企业版 ,定义为服务器端的应用。   javame  java微型版micro edition,定义在消费性的电子产品上。

javame已经趋于末路,逐步被安卓取代。

javaee是找工作的。javaee包含了javase,所以必须从javase学起。

javame≠安卓开发。

4543ba8dac7e4a2a8cdfac9b13279eb7.png

 

1.2 JAVA的核心优势

最大的核心优势:跨平台。

  • 跨平台/可移植
  • 安全性
  • 面向对象
  • 简单
  • 高性能
  • 分布式
  • 多线程
  • 健壮性

1.3 JAVA应用程序的运行机制

高级语言有编译型与解释型俩种,而java是俩种的结合。例如,C语言是编译型语言,python是解释型语言。

c387e1926f7c4b8d84a4ed9ff0b5de0e.jpg

 java避免了与操作系统直接进行交互,通过了jre这样的一个中介。

1.4 JDK,JRE,JVM的区别与作用

JVM是JAVA virtual machine的简写。他负责处理字节码文件,直接与OS打交道,他负责解释java编译后生成的字节码文件。

JRE 是JAVA runtime environment的简称,他包含了java虚拟机,库函数以及运行java应用程序所需的文件。

JDK是java development kit java开发套件的简称,他是包含了JRE,还增加了编译器和调试器等有关开发的文件。

d185a2d93e244b9686119d2f52124dda.jpg

包含关系图

34cfdb1d371c45afb6c33352ecc462c0.jpg

1.5 JDK安装&JAVA环境变量配置&测试安装成功

fe07b6251e0d4b64bb3060b6952342c5.png

ef6e5679c43f42329dc9c8502a431ba1.png

JAVA环境变量配置

562584ed2db94d8b95275fd97ae8f0fa.png

cccc84a0813841cfa0c8a1597c65b6cc.png

PS:使用%JAVA_HOME%是引用系统变量,因为之后的JAVA学习都会用到这个变量,为了简洁,直接定义一个系统变量,然后path路径引用它即可。

补充: src.zip是JDK的源代码。

c50a5c60ead744638fd55a6f25716173.png

0a784e539be74209aeb6998facc0929e.png

JDK很多公司都可以自己实现,oracle公司是平时默认常说的JDK。

1.6 第一个JAVA程序

1ead58c4399b4ecfa4a4163cce78161c.png

ac3ee61614364907a82e31e761ff876b.png

944e2680ae634d8a9a36ac4a8cceb261.png

6ae7e8d64170406c875004b9f01eed77.png

javac负责编译,java调用虚拟机。每一次的代码修改都需要进行编译后执行。报错信息可追溯。

在java源文件的目录下,执行命令  javac 源文件名.java     这句的意思是将源文件编译成字节码文件。   java 源文件名   这句是调用虚拟机解释字节码文件,输出运行结果。这句话源文件不需要在源文件名后加.class。

不仅仅只有编译错误,还会有执行错误。

c2ea165711ee4a90aa75d82967e816f3.png

 

1.7 java代码规范&常用的DOS命令

9b82aaf4c4f54c62bd929e7d454f12e7.jpg

9155a7c0b3134f018eee53f05c2f7547.png

 

1.8 常用开发工具

更加强大的记事本 notepad ++,ultraedit,editplus。

工作中的IDE,常用fba0e83d21b84232b0cc9281d614dcf4.jpg

eclipse不需要安装,解压就可使用。并且选择的工作空间存放着自己的源代码。

1.9 项目结构

src目录存放源代码,bin目录存放class字节码文件。在eclipse里创建class文件时会自动编译成class文件,也会在目录中生成java文件。

1.10 IDEA

1.下载

85ff2f6e786940a7b5ec03152a8c115c.png

2. 安装与配置

ebc78d68b45c436cb73a1b76a1b32f6f.png

第三项暂时理解为一个文件夹。

9432081045da42f799b9735a788c38ee.png

864ed2731e6d4928974895ad481149b5.png 

新建一个class文件,然后可以编辑。

1.11 第一个项目java台球小游戏

 

二、变量&数据类型&运算符

c6ce5adeb68d45558ba3b34da0e0c944.png

2.1 预备知识

0.二进制

a332fb54b1094d7e81b164c97797a162.png

bbf6c41698d14161bca0164087482300.png  609157b768d84ccdbe6aee3e6591cae6.png

1.注释

7cebf8b9777247e5be9e7016b07facb8.png

 注释信息不会出现在class字节码文件中,编译会忽略注释。

注释有3种。//单行注释      /*  */多行注释   /**      */文档注释    

多行注释可以实现在行内注释。

2. 标识符

f8b6a6dde8e64190b938e0d63ec4641c.jpg

 标识符开头有符号的严格限制。字母包含了汉字,因为采用了unicode编码。所以这里的字母是广义的含义。

0b8540f771274adc8f87d71d3ea5b9c1.jpg

 注意书写规范,也就是驼峰原则。

3.JAVA关键字/保留字

这些关键字不能用来作变量名。

63161f6c99ff48458a59c9a48556b36a.jpg

 注意,不需要背下来,边用边记。

2.2 变量

1.变量的本质

99f3a7593085450e93b35b85ddab43a4.jpg

变量是OS分配的一块内存的名字,变量必须定义其类型,因为OS根据变量类型分配合适的空间,这样可以合理使用内存资源。

2. 变量的分类与作用域

变量类型有3种:局部变量,成员变量,静态变量。

局部变量(local variable):定义在方法或语句块内部的变量。从属于方法。

成员变量(member variable)方法外部,类内部的变量,又被称为实例变量。成员变量会自己赋初值,区别于局部变量。

0db9e5daef5d4352b15f218ee9bb94b4.jpg

 静态变量:(static variable)又称为类变量,从属于类,生命周期是整个类。

3 常量(constant)与final

常量命名规范为大写和下划线,例如MAX

常量不可更改,变量用final修饰就变为常量。

例如,final String NAME="fcj" ;

2.3 基本数据类型

104ab31b536746f78f96e5baae4e5712.jpg

注: boolean占用1位。其他都是字节单位。引用数据类型是4字节代表了对象的地址。

1. 整型

整型范围与运行java代码的机器无关,这也是java跨平台的原因之一,而C和C++需要根据处理器整型范围有所不同。

例如  int a=15   整型变量a   整型常量15

整型常量默认是int型。long globalPopulation=7200000000(L)。尽管已经定义了long,但是后面整型常量超过了int。所以在后面加L或l。

49ff7021a23544d9b855d55fab764850.jpg

 2. 浮点型

d68b9124274d418ebdafb40fce80b483.jpg

 浮点型常量默认为double。浮点型表示的数很大。因为小数无法精确。涉及到小数的表示又存在一种科学记数法。

为了合理分配空间,因为浮点数常量默认double,所以在浮点常量后面加F或f,这样这个数就表示float了。

float a=3.14F;   double b=6.28;  double b =628E-2;

注:浮点数不精确,一定不要用于比较。非要比较,用bigdecimal.

e8cb425cf6364708816e90093e8e175c.jpg

 BigDecimal bd2=BigDecimal.valueOf(1.0/10.0)

3.  字符与转义字符

0fb504986a774cf69a3f54612c043b88.jpg

unicode编码有16位   61字符编码为a。

转义字符的目的就是让我们能够打印出一些特殊的字符。

ff8caa14a8ea4d3ab0c7bb6880e8160b.jpg

4.  boolean布尔类型

519a718f21804027b44135ea312eec66.jpg

 注意:在java中true,false不能用1,0替代。区别于C。

2.4 运算符(operator)

计算机的一大作用:进行数学运算。 

bafa39068007423380458952d8ba3a35.png

1 算术运算符

运算规则

164b902e3f6946b4a67819f135fe1067.png

float f1 = 3.14  //报错,默认为double
float f1 = 3.14F  

da319670a1bc4a528052c7e00b0f8d05.png

注意,余数的符号是跟随左操作数的。

int a = 3;
int b = ++a;  //b=4

int a = 3;
int b = a++;  //b=3

2 赋值运算符及其扩展运算符

e4aa4692489d4100b9e4eead83be5312.png

a *= b + 3  //相当于a=a*(b+3)

3 关系运算符

结果只有2个  -----true  or false

16b386adc208450997a66b6cc3cde556.png

4 逻辑运算符与短路问题 

34dd6f1c80e34a98a6f2bbdd6545ff64.png

逻辑运算符很重要!!!

5 移位运算符(5个)

~取反      &垵位与    |按位或   ^按位异或   << 左移   >> 右移

int a = 2 <<2;//左移一位等于乘2   8
int b = 12 >>2;//右移一位等于除以2   3

注:推荐使用移位运算实现乘除,这是因为移位运算操作效率高。

6 字符串连接符

+   只要有一侧当做字符串使用,那么他就会把字符连接起来。

int a = 3+4;
string b = “3”+4;//输出34

注意字符串不是基本数据类型,它是一个对象。字符串又区别于字符。

char d = 'a'  ;  d+4    结果为101;  字符当做整数处理。

双引号字符串,单引号是字符。

7 三目运算符(条件运算符)

x ? y : z      当x为true,值为y, x为false,值为z 。

8.运算符优先级 

 2a9bb9ebf0a0430e9626d93359725e15.png

大致有印象即可。

逻辑非,逻辑与,逻辑或三者的优先级掌握一下。逻辑非> 逻辑与 > 逻辑或。尽量用小括号()组织起来。

6b12aa0cf4f94be7a3b92eac6cb96f8b.png

2.5 数据类型转化

1 自动类型转化

容量小的自动转化为容量大的数据类型。容量小的转换容量大的精度会丢失。容量不是字节大小。例如long是8字节,float是4字节。但float比long类型容量大。  long会自动转换为float。

long e = 2.71F//报错
long e = 2.89//报错2.89默认为double;

d114855572584f71bd3d54f6f3894d0e.png

2 强制类型转化

当然容量大的也并非不能转化成容量小的数据类型。

  • 语法   (数据类型)var

3832d4d18f9b46b396cc4b119bbb9398.png

输出:3   98   b

3. 基本数据类型转换常见错误与问题。 

00f9b0a70f384675be97c50ed73f85ce.png

当俩个很大的操作数进行乘法是很容易溢出,这时可以给一个操作数转化为long类型,之后运算结果就是long的类型。不易产生溢出。

f8103b0fbbe54f368f6e175cf02fbc2a.png

1f885d3c87714fddacd4630274a16de0.png

 long类型尽量写大写的L。

案例:计算题

7ad7d305c87c43e397a60279dfe559b4.png

 

4. 简单的键盘输入与输出

相关代码 

5f26c965db6b4ab4882e3c9a6974f1a5.png

一个 java语句的结束看的是分号,不是其他的。

三. 控制语句

8f60c98d622545a1b331d4e32b6e8fd6.png

23c618412ba447cd8ceb0361f6adae37.png

3.1 条件判断结构

1. if单分支     

4495972b9f1244cc8f9e8c000e0acf0d.png

案例:掷骰子

建立一个包,在这个包中建立类文件,写入游戏代码。

e7d669585c854e44a23949876de2dd05.png

2. if……else……双选择结构   

 

3. 多条件的结构     

4. switch选择结构 

491b60dd62de481dbbe568ebd81884a5.png

crtl+鼠标点击可以打开点击的的源码。

多选择结构练习代码

753606ac98964db9851eb3c302e71bb9.png

3.2 switch语句

break表示结束switch语句。switch语句可读性更强,多值判断推荐使用switch。

switch (表达式) {
		case value1: {			
			yield type;
			break;
		}
		case value2: {			
			yield type;
			break;
		}
		default:
			默认表达式;
			
		}

aeed2e2980da4682839dd7b70d598c9e.png

3.3 循环结构

1. while循环

public class test001 {
	public static void main(String[] args){
		//1~100累加和
		int i = 0;
		int sum = 0;
		while (i<=100) {
			sum += i;
			i++;
		}
		System.out.println("sum ="+ sum);
    }
}

println中的ln作用是打印换行。去掉ln直接打印不换行。

2. for循环_dowhile应用

do while先执行,后判断。实际工作用的较少。重点在于for循环。

for(;;){                 等价于whlie(true)

}

3. 嵌套循环

经典练习题打印9*9乘法口诀表。

package test01;

public class 乘法口诀表 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		for(int i = 1;i <=9;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+"*"+i+"="+(i*j)+"\t");
			}
			System.out.println();
		}
		
	}

}

3.4  break-continue语句

break强行退出循环,不执行之后的循环次数。

continue用于中断本次循环,继续执行下一次循环。

c758f5beae3a423d85fa27820b800fe7.png

 Math.round这个方法是取四舍五入。该程序随机产生【0,100)内的随机数,匹配到88则结束。

带标签的俩个语句,类似于goto语句功能,只需了解,不推荐使用。Java没有goto语句。

18a8f36dcebd480c97d454e93b19c0f4.png

23 综合案例练习 

 

 

二、面向对象阶段

1. 方法(method)

31c376a7dc354512b42864a0fbb6d262.png

类似于面向过程的函数(function)

e458d6a31dc54fbead8c74563416429e.png

案例练习 

 798589c6618644e59e0b1b8e95bc6d8a.png

/**
 * 
 */
package test01;

/**
 * 員工處罰表
 * @author fcj
 *
 */
public class TestMembSal {

	/**
	 * @param args
	 */
	public static int late(int lateTime,double sal) {
		int fine = 0;
		if (lateTime<11) {
			System.out.println("警告:不能遲到!");
		}else if (lateTime<21) {
			fine = 100;
		}else if (lateTime < 31) {
			fine = 200;
		}else if (lateTime < 61) {
			fine = (int)sal/(30*2);
		}else {
			fine = (int)(sal/30)*3;
		}
		System.out.println("罰款:"+ fine);
		return fine;
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		late(35, 10000.0);

	}

}

2. 方法的重载

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值