砺锋TooBug讲:Java入门笔记

讲师:TooBug /  砺锋科技

目录:

 

杂谈


阿里巴巴以Java、云计算作为技术支撑;腾讯以开发客户端C++为主,发展文娱板块。

Android开发底层通用Java。

现在普遍要求产品经理也得懂技术。

职业发展方向:

 

常用DOS命令


砺锋TooBug讲:Java入门笔记_第1张图片

 

Java的历史


开发人员:詹姆斯·高斯林 等。现在属于Oracle甲骨文公司所有。

 

Java的平台划分


Java语言版本以JavaSE(标准版)为基石,是所有Java的业务的核心,主要用于桌面端开发,与C++相比无任何优势;

JavaEE(企业版)是专为企业开发提供的,应用于金融、电信、WEB端、云计算、大数据等行业领域,市面上泛指的Java开发即是此版本;

JavaME(微型版)主要提供一些嵌入式(代码嵌入芯片或载体)的设备的解决方案,目前基本淘汰,嵌入式推荐使用C++。

砺锋TooBug讲:Java入门笔记_第2张图片

 

Java的特点


Java本质上是C/C++语言过渡来的,改善了弊端。Java不需要手动管理内存。

Java语言特点:面向对象、健壮性、跨平台性。

砺锋TooBug讲:Java入门笔记_第3张图片

 

JDK/JRE/JVM之间的关系


JDK:Java Development Kit (开发工具包)

JRE:Java Runtime Environment (运行环境)

JVM:Java Virtual Machines (虚拟机)

 

Java目录分析


 
 

系统环境变量配置


此电脑 属性 -> 高级系统设置 -> 环境变量

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 代表一个换行 (效果如同printlnln 
\t 代表一个tab键

System.out.println ()  打印之后换一行,先打印再换行;
System.out.print ()  打印之后不换行。

 

变量


在实际开发中,很多值是无法固定的,也就意味着需要变化,但改变的数据范围以及类型是有限定的。

变量可以理解为一个装在容器里的东西,他就是一个在Java内存里存储数据的。

容器 存储类型 容量
易拉罐 液体 330毫升

容量转换为Java变量:

变量名 存储类型 取值范围
age 年龄 数据类型 数据类型

 

数据类型


Java是强类型语言,针对不同数据类型、数据大小,必须一一兼容,处理和操作严格。为Java的数据存储和内存管理提供极大的便利和安全性。

强类型语言与弱类型语言的基本区别:

砺锋TooBug讲:Java入门笔记_第4张图片

数据类型分为基本数据类型引用数据类型

四类八种的数据类型(基本数据类型)的划分

  • 整数类型
整数型 占用空间(字节) 取值范围
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 );

 

你可能感兴趣的:(Java实训周)