讲师:TooBug / 砺锋科技
目录:
阿里巴巴以Java、云计算作为技术支撑;腾讯以开发客户端C++为主,发展文娱板块。
Android开发底层通用Java。
现在普遍要求产品经理也得懂技术。
职业发展方向:
开发人员:詹姆斯·高斯林 等。现在属于Oracle甲骨文公司所有。
Java语言版本以JavaSE(标准版)为基石,是所有Java的业务的核心,主要用于桌面端开发,与C++相比无任何优势;
JavaEE(企业版)是专为企业开发提供的,应用于金融、电信、WEB端、云计算、大数据等行业领域,市面上泛指的Java开发即是此版本;
JavaME(微型版)主要提供一些嵌入式(代码嵌入芯片或载体)的设备的解决方案,目前基本淘汰,嵌入式推荐使用C++。
Java本质上是C/C++语言过渡来的,改善了弊端。Java不需要手动管理内存。
Java语言特点:面向对象、健壮性、跨平台性。
JDK:Java Development Kit (开发工具包)
JRE:Java Runtime Environment (运行环境)
JVM:Java Virtual Machines (虚拟机)
此电脑 属性 -> 高级系统设置 -> 环境变量
1. 新建系统变量“JAVA_HOME”(行业通用取名) ,变量值为JDK的安装路径,我的路径是“D:\Java\jdk1.8.0_101”
2. 在系统变量中找到“Path”,新建2个:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
3. cmd里输入“javac”、“java”验证一下,不报错即可。
注:Java 1.7版本后无需再配置classpath等。
class Demo{
public static void main(String [] args) {
System.out.println("Hello Word");
}
}
1. 最基本的单位是“类”,先定义类class。
2. 类class需要一个名字,在类后需要取个类名 Demo。
3. 所有代码必须写在一个类的范围内,需要给类来限定范围(即作用域,代码生效的区域) class Demo{ ... }
4. JavaSE的代码需要被JVM运行,就必须给JVM定义一个运行的主入口:public static void main(String [] args) {
5. 我们目前的学习需求就是在控制台输出一句话,所以我们在主入口里写上了一句输出语句: System.out.println("Hello Word");
一部分单词作为有特殊意义的、已被Java官方原先定义好,官方一般用于来表示变量、语法结构等等,无法再被开发者使用。
关键字全部为小写字母组成,比如class、static、char、float、private、public、int、if 等等等。
注: goto 和 const 不是关键字(没有goto语句),但为“保留关键字”,虽然没有具体意义,但是仍不能被使用。目前主流的开发工具(IDEA、Notepad++)对关键字有特殊颜色标识。
给类、接口、方法、变量等起名字时使用的字符序列。
通俗讲,就是给代码片段或变量自定的名字,比如 class Demo ,这个class就是关键字、表示为类,Demo就是标识符、表示为类名。标识符还会出现在方法名、变量名、常量名、对象名等等。
组成规则:
字 下 美 人 数 骆 驼(驼峰式命名)
1. 全部不能以数字开头,大部分编程语言亦如此;
2. 不能存在除 $ (美元)和 _ (下划线)之外的任何形式的特殊符号;
3. 可以是小写字母、大写字母、 $ 、 _ 、数字任意混合组成;
4. 不能是Java的关键字;
5. 中文、¥(人民币)其实也可以,但非常不建议。
命名标准:
每个单词首字母大写。
例如:HelloWord 。
第一个单词全小写,第二个单词开始、每个首字母大写。
例如:helloWordClass 。
全部大写,每一个单词之间用 _ (下划线)隔开。
例如:HELLO_WORLD 。
单词均为小写,不能有任何特殊字符,多层用 . 隔开。
例如:com.xxx.settlment , package china.hubei.wuhan;(China是一个文件夹,hubei是china下的一个文件夹,wuhan是hubei文件夹下的一个文件夹。
需要对具体代码进行描述和解释,不需要被JVM执行却需要保留的内容。
格式:// 单行注释
格式:/* 多行注释 */
一般用于描述一个类或方法。格式:/** 文档注释 */
/*
这是一个多行注释
*/
class Demo{ //(单行注释)类,命名为Demo
public static void main(String [] args){ //给JVM定义一个运行的主入口
System.out.print("Hello Word!"); //输出结果为“Hello Word!”
}
}
指在程序执行过程中,这个值不发生改变的量。
在开发阶段,代码中定义的任意数据刚开始都是常量数据。
1. 整数常量:所有的定点数。
System.out.println(190+20);
2. 小数常量:所有的浮点数。
System.out.println(190.99/12.2);
Tips:常量允许做简单的运算(运算也算常量)。
定义的任意数据,默认开始都是一个字面值常量。如果多个字面值常量进行计算,则是“先计算、再存储”。
3. 布尔常量:只有两个值(true 、 false)。
System.out.println(false);
4. 字符常量:只能存储一个字符,用单引号包含 '字' 。
System.out.print('哥');
5. 字符串常量:可以存储多个字符,使用多引号 "字符串" 。
System.out.print("Hello Word!");
关于常量输出
Q:我需要输出“你好” 这句话(包含引号),需要怎么处理?
A:正确答案
System.out.println("\"你好\"");
在正常情况下,双引号" "以及单引号' '都会被JVM当作某一类型的标识,此时如果想将标识转换为一个普通的字符,就需要使用转义字符。
转义字符 | 功能 |
\" | 代表一个普通双引号 |
\' | 代表一个普通单引号 |
\\ | 代表一个普通的斜杆 |
\n | 代表一个换行 (效果如同println的ln ) |
\t | 代表一个tab键 |
System.out.println () 打印之后换一行,先打印再换行;
System.out.print () 打印之后不换行。
在实际开发中,很多值是无法固定的,也就意味着需要变化,但改变的数据范围以及类型是有限定的。
变量可以理解为一个装在容器里的东西,他就是一个在Java内存里存储数据的。
容器 | 存储类型 | 容量 |
易拉罐 | 液体 | 330毫升 |
容量转换为Java变量:
变量名 | 存储类型 | 取值范围 |
age 年龄 | 数据类型 | 数据类型 |
Java是强类型语言,针对不同数据类型、数据大小,必须一一兼容,处理和操作严格。为Java的数据存储和内存管理提供极大的便利和安全性。
强类型语言与弱类型语言的基本区别:
数据类型分为基本数据类型、引用数据类型。
四类八种的数据类型(基本数据类型)的划分
整数型 | 占用空间(字节) | 取值范围 |
byte | 1 | -128 ~ 127 |
short | 2 | -32768 ~ 32767 |
int | 4 | ....无需记忆 |
long | 8 | ....无需记忆 |
浮点型 | 占用空间(字节) | 取值范围 |
float | 4 | ... |
double | 8 | ... |
字符型 | 占用空间(字节) | 取值范围 |
char | 2 |
布尔型 | 占用空间(字节) | 取值范围 |
boolean | 1 |
除了以上四类八种基本数据类型,其余的数据类型都被称为“引用数据类型”。
String
String str = "内容"
String str = "今天的天气好晒呀";
System.out.println(str);
格式1【边声明、边赋值】:
数据类型 变量名 = 初始化值;
int i = 100;
格式2【先声明、后赋值】:
数据类型 变量名;
变量名 = 初始化值;
int i;
i = 100;
格式3【一般不使用】:
数据类型 变量名 = 初始化值,变量名 = 初始化值...;
int i = 100,b = 200,c = 300;
具体正确代码举例:
//存储TOOBUG的性别
char sex = '男';
//存储TOOBUG的性别,用lon变量会浪费存储空间
byte age = 18;
//存储TOOBUG的钱
int toobug = 9000000;
//存储班长的钱
short banZhang = 20000;
//存储pony的钱
int pony = 90000000;
//存储比尔盖茨的钱
long gaiCi = 9000000000L;
注意:
1. 如果右边的常量值超出了 short 的取值范围,则会自动提升为 int 类型。
2. 变量的赋值过程,是先检查右边,再赋值给左边。
3. 数据溢出示意:
4. 在初始值大于int、且小于long的时候,只需在初始值后加一个标记 L ,告诉JVM这个值我是赋值给long的、请通过检查,此时JVM将不会当作int类型处理。例如:long l = 90000000000L;
举个反例:float f = 190.01;同样产生错误。原因如5。
5. 在浮点数数据中,JVM默认为double类型,反例将一个默认的double类型存储到比他容量小的float类型当中,会造成数据溢出、精度损失,所以我们需要在初始值后面加上 F / f 。
所以正确的为:
float f = 190.01 F;
6. 一般来说,变量的执行顺序是从右往左,也就是JVM的检查顺序。比如 long l = 20000000; 。
7. 在一个作用域(一个{ }花括号内为一个作用域)中,不允许出现同一个变量名。
8. 如果采用格式2的方式来定义变量,其实就是“先声明、后赋值”的流程,在使用之前要保证这个变量有成功赋值,否则编译不通过。
9. 如果采用格式3,尽量想清楚、确保你的数据类型不发生改变,因为这种方式一旦定义,数据类型就已经固定,如果需要改变某一个数据类型,你就需要大改动代码,因此一般不使用格式3。
10. 一般的,整数变量用int,浮点变量用double。通俗讲,没有小数点的默认是int,有小数点的默认是double。(取舍原则,舍弃浪费的一丁点内存空间,提高其他方面效率)
一般是做加法运算,例如两个常量或变量相加。
还有做字符串的拼接。
//使用加法做字符串的拼接
String str = "今天的天气";
String str1 = "好晒呀";
String str2 = str + str1;
System.out.println(str1 + str2);
1. 在正常数值当中,如果使用+,则是进行普通的加法运算;如果这个当中,包含了字符串,则从字符串的起点开始,右边的所有的数据类型都会默认转换为字符串,此时进行的则是拼接,而不是加法计算。
//如果左边是字符串并且使用+号的话,默认右边都是字符串
int i = 10;
int i1 = 20;
System.out.println("两个相加的结果:" + i + i1 );