Java基础篇1 初始Java+标识符+关键字+数据类型

1.Java基础程序设计

 

1.1 认识Java

Java是一门编程语言 主设计者是James Gosling Oak(Java的前身 1991出现)

jdk发展过程

jdk1.0 1995年推出 标志着Java正式进军Internet的开始

jdk1.2 1998年推出 提供了大量的轻量级组件包,从而避免了对Windows平台的依赖 Java改名为Java2

... ...

Java语言的特点:

1、简洁有效 2、可移植性(通过jvm) 3、面向对象 4、解释型 5、适合分布式计算

6、拥有较好的性能 7、健壮、防患于未然 8、具有多线程处理能力 9、具有较高的安全性

10、是一种动态语言 11、是一种中性结构

计算机高级语言类型主要有编译型和解释型两种,Java是两种类型的集合。

Java中处理代码的过程:

Hello.java文件 --编译-->Hello.class文件(字节码文件)--解释-->机器语言(二进制代码)Hello

 

1.2 java开发环境的搭建

下载Java jdk1.8 下载地址:Oracle官网 http:www.oracle.com

配置jdk环境变量:

设置流程为:选择【计算机】--右键-->【属性】 选择【高级系统设置】对话框 选择【高级】选项卡 单击【环境变量】按钮,打开【系统变量】对话框,在【变量值】文本框的最后加上路径,进行path变量信息编辑。

 

模板如下:

path

E:\Java\jdk1.8.0_74\bin;

简单配置好之后可以在命令行 输入Javac命令进行测试;

注:javac.exe是Java本身提供的编译命令,主要目的是用来将*.Java文件编译成*.class文件。

结论一:

(1)public class 定义要求文件名(*.java中的*号)与类名保持一致,而在*.java文件中只允许有一个public class定义。

(2) class定义的类文件名可以与类名称不一致,但在编译之后每一个使用class声明的类都会生成一个*.class文件,即一个Java文件可以产生多个class文件。

注意:类名称要求每个单词的首字母大写 ,例如Hello Demo。

Classpath主要指的是类的运行路径。

 

常见的面试题:请解释path和classpath的区别?***

· path:是操作系统的环境属性,指的是可以执行命令的程序路径;

· Classpath:是所有*.class文件的执行路径,Java命令执行时将利用此路径加载所需要的*.class文件。

 

小结:

1、Java实现可移植性靠的是Jvm,Jvm就是一台虚拟的计算机,只要在不同的操作系统中植入不同版本的Jvm,那么Java程序就可以在各个平台上移植,做到”一次编写,处处运行“。

2、Java中程序的执行步骤为:

(1) 使用javac将一个*.Java文件编译成*.class文件。

(2) 使用Java可以执行一个*.class文件。

3、每次使用Java命令执行一个class的时候,都会启动Jvm,Jvm通过class path给出的路径加载所需要的类文件,可以通过set classpath 设置类的加载路径。

4、Java程序主要分为Java Application 和Java Applet 程序两种。Java Applet主要是在网页中嵌入的Java程序,基本上已经不再使用了;而Java Application 是指有main()方法的程序;

 

2、简单的Java程序

 

2.1 一个简单的Java程序范例:

public class TestJava{

public static void main(String [ ] args){ //Java操作的一个简单范例

int num = 10; //定义一个整形变量num

num = 30; //改变变量的内容

system.out.println("num的内容是:"+num); //输出变量的内容

}

}

 

2.2 Java程序的注释

注释概述:用于解释说明程序的文字,提高程序的阅读性,可以帮助我们调试程序。

Java中注释分类格式:

· 单行注释:

格式://注释文字

· 多行注释:

格式:/*注释文字*/

注意:多行注释不可以嵌套使用,单行可以。

· 文档注释:被Javadoc工具解析生成一个说明书,面向对象部分讲解。

格式:/**注释文字*/

说明:用这种方法注释的内容会被解释成程序的正式文档,并能包含进如javadoc之类的工具生成的文档里,用以说明该程序的层次结构及方法。

 

先写注释 再写代码;

/*

需求:我准备写一个Java程序,把“helloWorld”这句话输出在控制台

 

分析:

A:要写一个Java程序,必须定义类

B:把数据能出输出,说明我们的程序是可以独立运行的,而程序要独立运行,必须定义main方法

 

实现:

A:Java语言提供了一个关键字:class用来定义类,后面跟的是类名

B:main方法的格式是固定的:

publicstatic void main(String [ ]args){

}

C:输出语句的格式是固定的;

System.out.println("HelloWord");

"HelloWorld"这个内容是可以改变的

*/

-*-*-* -*-*-*-*-*-*-yqy*-*-*-*-*-*-*-*-*-*-*-

//这是我的HelloWorld案例

class HelloWorld{

/*为了程序能独立运行,定义main方法

main方法是程序的入口

被jvm自动调用

*/

public static void main(Sting [ ]args){

System.out.println("HelloWord");

}

}

 

2.3 Java中的标识符

· 标识符概述:

就是给类、接口、方法、变量等起名字时使用的字符序列;

 组成规则:

英文大小写字母 数字字符 $ 和 _

 注意事项:

a、不能以数字开头;

b、不能使Java中的关键字;

c、区分大小写;

 

2.4 Java中的关键字(保留字)

· 关键字:被java语言赋予特定含义的单词。

· 特点:组成关键字单词的字母全部小写。

                                                                          Java中的关键字

Java基础篇1 初始Java+标识符+关键字+数据类型_第1张图片

注意:

1. 虽然goto、const在Java中没有任何意义,却也是保留字,与其他的关键字一样,在程序里不能用来作为自定义的标识符。

2. 对于true、false、null、虽然不是关键字,但是却作为一个单独标识类型,所以也不要直接使用。

3. 对于assert和enum关键字是Java中新增的内容,assert是在jdk1.4的时候新增的,enum实在jdk。5之后增加的。

4.类似于Notepad++这样的高级记事本,针对关键字都有特殊的颜色标记。

 

/*

class KeyWordDemo {

public static void main(String[] args) {

System.out.println("HelloWorld");

}

}

*/

2.5 命名规则

常见的命名规则:见名知意;

1)包:其实就是文件夹 ,用于把相同的类名进行区分

单级:pangxie

多级:cn.itcast

cn

itcast

注意:包名都是小写;

 

2)类或者接口:

一个单词:单词的首字母必须大写

举例:Student Dog

多个单词:每个单词的首字母必须大写 骆驼

举例:HelloWorld

 

3)方法或者变量:

一个单词:单词的首字母必须大写

举例:main age

多个单词:从第二个单词开始,每个单词的首字母必须大写

举例:studentAge

 

4)常量:

一个单词:全部大写

举例:PI

多个单词:每个字母都大写

举例:STUDENT_MAX_AGE

 

2.6 常量:

概述:在程序执行过程中,其值不发生改变的量。

分类:

A:字面值常量

B: 自定义常量

 

字面值常量:

(1):字符串常量 用双引号括起来的内容。

举例:"helloworld"

(2):整数常量 所有的整数

举例:100

(3):小数常量 所有的小数

举例:10.23

(4):字符常量 用单引号括起来的内容

举例:'a'

(5):布尔常量 比较特殊

举例:true false

(6):空常量

举例:null

 

二级制:逢二进一

八进制:逢八进一

十进制:逢十进一

十六进制:逢十六进一

 

2.7 变量

  1. 变量:就是在程序的执行过程中,其值可以在一定范围内发生改变的量;
  2. 变量的组成规则:
    1. 必须对其进行限定。

如何限定呢?用数据类型。

b:我们在运算的时候,不可能是拿着这个空间去运算,我们真正运算的时使用的是该空间中的值,我们就给该空间起一个名字。 变量名

c:即便你有数据类型了,你有变量名了,但是如果没有值,这个变量这个空间就是一个垃圾空间,没有任何意义;初始化值

 

  1. 定义变量的格式:

数据类型 变量名 = 初始化值;

 

2.8 数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数

据类型,在内存总分配了不同大小的内从空间。

数据类型分类:

A:基本数据类型;

B:引用数据类型(类,接口,数组)

 

1. 基本数据类型:(4类8种)

(1)整数

类型 字节数 范围

byte 1个字节 -128~127

short 2个字节 -2^15~2^15-1

int 4个字节 -2^31~2^31-1

long 8个字节 -2^63~2^63-1

(2)浮点数

float 4个字节

double 8个字节

(3)字符

char 2个字节

(4)布尔

true 2个字节

false 2个字节

 

注意:

整数默认为int类型 长整型后缀用L或者l标记。建议使用L;

浮点数默认是double类型 单精度浮点数用F或者f标记。建议使用F。

 

使用变量的注意事项:

1、作用域:

变量定义在哪个大括号内,它就在这个大括号内有效。

并且,在同一个大括号内不能同时定义同名的变量。

2、初始化值:

没有初始化值的变量不能直接使用

你只要在使用前给值就行,不一定非要在定义的时候立即给值。推荐在定义的时候就给值。

定义变量的格式:

a:数据类型 变量名 = 初始化值

b: 数据类型 变量名;

变量名 = 初始化值;

3、在一行上建议只定义一个变量

也可以定义多个,但是不建议

 

特别注意:boolean不能转换为其他类型

默认类型转换(从小到大)

2.强制类型转换:

强制转换:从“大”的数据类型 到“小”的数据类型

强制转换格式:

目标类型 变量 = (目标数据类型)(被转换的数据)

注意:不要随意的使用强制转换,因为它隐含了精度损失问题。

 

思考题:

1:请问下面这个有没有问题?

double d = 12.345;

float f = d; 错误;

//把double赋值给float,加了强制类型转换

double d =12.345;

float f = (float) 12.345; 正确;

 

2:看看下面两个定义有没有什么区别?

float f1 = (float)12.345;

float f2 = 12.345F;

f1其实是通过一个double类型转换过来的。

而f2本身就是一个float类型。

 

面试题1:

byte b1 = 3,b2=4,b;

b=b1+b2; //这个是类型提升,所以有问题

b=3+4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错

哪句是编译失败的呢?为什么呢?

第一句编译失败,因为b1+b2是int型 而b是byte型 不能把int赋值给byte型。

因为变量相加,会首先看类型问题,最终把结果赋值的时候也会考虑类型问题。

常量相加,首先做加法,然后看结果是否在赋值类型的范围内,如果是在就不报错,不在才报错。

 

思考题2:

byte=130;有没有问题?如果我想赋值正确,可以怎么做?结果是多少呢?

因为byte的范围是:-128~127。

而130不在此范围内,所以报错。

byte = byte(130);使用强制类型转换。

 

强制类型转换溢出后的结果怎么算?

分析过程:

我们要想知道结果什么,就应该知道是如何进行计算的。

而我们又知道计算机中数据的运算都是补码进行的。

而要得到补码,首先要计算出数据的二级制(原码)。

A:获取130这个数据的二进制。

00000000 0000000 0000000 10000010

这是130的原码,也是反码,还是补码。

B:做截取操作,截成byte类型。

10000010

这个结果是补码。

C:通过已知补码求其原码。

符号位 数值位

补码: 1 0000010

反码: 1 0000001

原码: 1 1111110

所以输出结果为-126

 

练习:byte b = 300;

 

3.数符数据参与运算

 

/*

看程序写结果

字符串数据和其他数据做+,结果是字符串类型。

这里的+不是加法运算,而是字符串连接符。

通过字符和一个整数相加,看ASCII表

'a' 97

'A' 67

'0' 48

*/

system.out.println("hello"+'a'+1);//helloa1

system.out.println('a'+1+"hello");//98hello

2019/07/28 19:08

 

总结:

1:关键字(掌握)

(1)被Java语言赋予特定含义的单词

(2)特点:

全部小写。

(3)注意事项:

A:goto和const作为保留字存在。

B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记。

2:标识符(掌握)

(1)就是给类,接口,方法,变量等起名字的字符序列

(2)组成规则:

A:英文大小写字母

B:数字

C:$和_

(3)注意事项:

A:不能以数字开头

B:不能使Java中的关键字

C:区分大小写

(4)常见的命名规则(见名知意)

A:包 全部小写

单级包:小写

举例:liuyi,com

多级包:小写,并用.隔开

举例:cn.incast,com.baidu

B:类或者接口

一个单词:首字母大写

举例:Student,Demo

多个单词:每个字母的首字母大写

举例:HelloWorld,StudentName

C:方法或者变量

一个单词:首字母小写

举例:name,main

多个单词:从第二个单词开始,每个单词首字母大写

举例:studentAge,showAllName()

D:常量

全部大写

一个单词:大写

举例:PI

多个单词:大写,并用_隔开

举例:STUDENT_MAX_AGE

 

3:注释(掌握)

(1)就是对程序进行解释说明的文字

(2)分类:

A:单行注释://

B:多行注释:/**/

C:文档注释:/** */

(3)把HellWorld案例写了一个带注释的版本。

后面再写一个程序的过程。

需求:

分析:

实现:

代码体现:

(4)注释的作用

A:注释说明程序,提高了代码的阅读性。

B:可以帮助我们调试程序。

 

4:常量(掌握)

(1)在程序执行过程中,其值不发生改变的量

(2)分类:

A:字面值常量

B:自定义常量

(3)字面值常量:

A:字符串常量 "hello"

B: 整数常量 12,35

C:小数常量 12.345

D:字符常量 'a' ,'A', '0'

E:布尔常量 true false

F:空常量 null

(4)在Java中针对整数变量提供了四种表现形式

A:二进制 由0,1组成。 以0b开头。

B:八进制 由0,1, ...7组成。 以0开头。

C:十进制 由0,1,...9组成。 整数默认是十进制。

D:十六进制 有0,1,...9,a,...f(大小写均可)组成。 以0x开头。

 

5:进制转换(了解)

(1)其他进制到十进制

(2)十进制到其他进制

(3)进制转换的快速转换法

 

6:变量(掌握)

(1)在程序的执行过程中,其值在某个范围内可以发生改变的量

(2)变量的定义格式:

A:数据类型 变量名 = 初始化值;

B:数据类型 变量名;

变量名 = 初始化值;

 

7:数据类型(掌握)

(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。

(2)分类:

基本数据类型:4类8种

引用数据类型:类,接口,数组。

(3)基本数据类型:

A:整数 占用字节数

    byte       1

    short      2

    int          4

long       8

B:浮点数:

    float      4

    double  8

C:字符

    char     2

D:布尔

boolean  1

 

注意:

整数默认是int类型,浮点数默认是double。

长整数要加L或者l。

单精度的浮点数要加F或者f。

 

8:数据类型转换(掌握)

(1)boolean类型不参与转换

(2)默认转换

A:从小到大

B:byte,short,char -- int --long --float --double

C:byte,short,char之间不相互转换,直接转成int烈性参与运算。

(3)强制转换

A:从小点的到大的

B:可能会有精度的损失,一般不建议这样使用。

C:格式:

目标数据类型 变量名 = (目标数据类型)(被转换的数据)

 

数据类型中补充的几个知识点

1:在定义Long后者Float类型变量的时候,要加L或者F。

整数默认是int类型,浮点数默认是double类型。

 

byte,short在定义的时候,他们接收的其实是一个int类型的值。

这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。

 

2:byte值的问题

byte b1 = 127;

byte b2 = (byte)128; //-128

byte b3 = (byte)129; //-127

byte b4 = (byte)130; //-126

byte的范围:-128~127

 

128:10000000

-128:1000000(这里的1既是符号位,也是数值位)

3:数据类型转换之默认值转换

byte,short,char -- int --long --float --double

 

long:8个字节

float:4个字节

 

A:它们底层的存储结构不同。

B:float表示的数据范围比long的范围更大。

long:2^63-1

float:3.4*10^38>2*10^38>2*8^38=2*2^3^38=2*2^114>2^63-1

4:Java语言中的字符char可以储存一个中文汉字吗?为什么呢?

可以。因为Java语言中的字符占用两个字节。

 

Java语言采用的是Unicode编码。

 

 

2019/07/28 19:19

 

你可能感兴趣的:(Java基础)