黑马程序员----java基础之关键字、标示符、变量、数据类型、附相关面试题

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1:关键字(掌握)

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

(2)特点:

全部小写。如:class、static等

(3)注意事项:

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

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

2:标识符(掌握)

(1)就是给类,接口,方法,变量等起名字的字符序列,要求见名知意。

(2)组成规则:

A:英文大小写字母

B:数字

C:$和_

(3)注意事项:

A:不能以数字开头

B:不能是java中的关键字

C:区分大小写

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

A:包 全部小写

单级包:小写

举例:itheima.com

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

举例:cn.itcast,com.baidu

B:类或者接口

一个单词:首字母大写

举例:Student,Demo

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

举例:HelloWorld,StudentName

C:方法或者变量

一个单词:首字母小写

举例:name,main

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

举例:studentAge,showAllNames()

D:常量

全部大写

一个单词:大写

举例:PI

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

举例:STUDENT_MAX_AGE

3:注释(掌握)

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

(2)分类:

A:单行注释
//

B:多行注释
/**/

C:文档注释(后面讲) /** */

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

后面我们要写一个程序的过程。

需求:

分析:

实现:

代码体现:

(4)注释的作用

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

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

后面我们会讲解一个更高端的一个调试工具

4:常量(掌握)

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

(2)分类:

A:字面值常量

B:自定义常量(后面讲)

(3)字面值常量

A:字符串常量 "hello"

B:整数常量
12,23

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,b,c,d,e,f(大小写均可)组成。以0x开头。

5:进制转换(了解)

(1)其他进制到十进制

系数:就是每一个位上的数值

基数:x进制的基数就是x

权:对每一个位上的数据,从右且从0开始编号,对应的编号就是该数据的权。

结果:系数*基数^权次幂之和。

例题:

二进制转十进制:0b10101=1*2^4+0*2^3+1*2^2+0+1*2^0=16+4+1=21

八进制转十进制:0123=3*8^0+2*8^1+1*8^2=83.

(2)十进制到其他进制

除基取余,直到商为0,余数反转:

十进制转二进制就除2,转8进制就除8取余,转十六就除16直到商为零。

例:20转换成二进制:10100

20/2=10  0

10/2=5   0

5/2=2    1

2/2=1    0

1/2=0    1

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

A:十进制和二进制间的转换

8421码。

B:二进制到八进制,十六进制的转换:

第一种方法:用十进制作为桥梁。

第二种方法:拆分组合,二到八,3位组合;二到十六4位组合。

6:变量(掌握)

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

A:必须对其进行限定。用数据类型来限定。

B:运算时不能直接拿空间去运算,真正运算时使用的是该空间中的值,我们就给这个空间起个代表名(变量名)

C:即使有数据类型了,有变量名了,但是这个空间是空的,没有任何意义,需要对其赋值。(初始化值)

(2)变量的定义格式:

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

B:数据类型 变量名;

变量名 = 初始化值;

(3)使用变量的时候要注意的问题

A:作用域:

变量定义在那个大括号中,它就在这个大括号内有效,并且,在同一个大括号内不能同时定义同名的变量。

B:初始化值

没有初始化值的变量不能直接使用,推荐定义变量的时候就给变量赋值

C:在同一行上建议只定义一个变量。

7:数据类型(掌握)

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

(2)分类:

A:基本数据类型:4类8种

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

(3)基本数据类型

A:整数 占用字节数
  范围

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

B:浮点数

float 4
-3.403E38--3.403E38

double
8 -1.798E308--1.798E308

C:字符

char 2

D:布尔

boolean
1

注意:

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

长整数要加L或者l,建议用L。long j=100000000L

单精度的浮点数要加F或者f,建议用F。float h=12.345F

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

(1)boolean类型不参与转换

(2)默认转换

A:从小到大

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

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

(3)强制转换

A:从大到小

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

C:格式:

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

例:byte a=3;   int b=4;    int c=a+b (默认转换)

byte c=(byte)(a+b)强制转换

9:思考题和面试题:

(1)下面两种方式有区别吗?

float f1 = 12.345f;

float f2 = (float)12.345;

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

而f2本身就是一个float类型。通常会使用第二种方法。

(2)下面的程序有问题吗,如果有,在哪里呢?

byte b1 = 3, b2 = 4 ,b;

b = b1 + b2;

b = 3 + 4;

答:b=b1+b2有问题,因为变量相加,会首先看类型,最后把结果赋值时也会看类型。上面b1+b2的结果是int类型。所以会出错

而b = 3 + 4是常量相加,首先会做加法,然后看结果是否在赋值的数据类型范围内,如果不是,就会报错。

(3)下面的操作结果是什么呢?

byte b = (byte)130;

答;因为byte的范围是-128到127.而130不在这个范围内,所以会报错。我们可以使用强制类型转换。byte b=(byte)130;

结果是多少呢?

分析过程:我们要想知道结果是什么,就应该知道是如何进行计算的。而计算机中的数据的运算都是补码进行的。要得到补码,就要首先计算出数据的二进制。

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

00000000 00000000 00000000 100000010

这是130的原码,因为是正数,所以也是它的反码,补码。

B:因为byte只有一个字节,所以需要截取。

100000010

这个结果是截取成byte后的补码。

C:已知补码,要求原码

符号位      数值位

补码     1         0000010

反码     1         0000001(向上借位减1)

原码     1         1111110

通过原码将二进制转换成十进制就是126,又因为首位是1,所以是-126.

(4)字符参与运算

字符与整数相加结果是整数

是查找ASCII里面的值

‘a‘ 97

‘A‘ 65

‘0‘ 48

System.out.println(‘a‘);//a

System.out.println(‘a‘ + 1);//97+1=98

(5)字符串参与运算

字符串数据和其他数据做+,结果是字符串类型,这里的+其实是字符串的连接符。

System.out.println("hello"+‘a‘+1);//helloa1

System.out.println(‘a‘+1+"hello");//98hello

System.out.println("5+5="+5+5);//5+5=55

System.out.println(5+5+"=5+5");//10=5+5

二:数据类型中的补充知识点

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

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

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

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

2:byte值的问题

byte b1 = 127;

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

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

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

byte .....(byte)256; //0     256-0=256

byte .....(byte)300; //44    300-44=256

相当于用强转的数据-256;

byte的范围:-128 ~ 127

128:10000000

-128:10000000 (这里的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编码。

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

时间: 2024-12-24 02:29:55

黑马程序员----java基础之关键字、标示符、变量、数据类型、附相关面试题的相关文章

黑马程序员---java基础语法---关键字,常量,变量,运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第一讲:java语言基础 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 用于定义数据类型的关键字  class interface byte short int  long  float

黑马程序员-java基础知识+环境搭建和变量配置

一.dos命令 软件:是一系列按照特定顺序组织的计算机数据和指令的集合. 交互方式:图形化界面.命令行方式 dir  directory 显示文件和子目录 cd   change directory 改变当前的路径(进入指定目录) md   make directory 新建一个子目录(文件夹) rd   remove directory 删除一个子目录(文件夹) cd.. 返回上一文件夹 cd/  返回根目录(磁盘) del  delete 删除文件 (不走回收站)   del *.txt(删

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.

黑马程序员——Java基础篇之对象归要

1.static关键字 1.1.static可以修饰成员变量,成员方法,还有类(其中这里的类是内部类) 1.2.static修饰的部分会随着类的加载而加载: 加载过程:当JVM执行static修饰的代码时,会在内存的共享区给static部分开辟一个空间,供该类持有,static部分不是某个对象的部分,而是该类共有的,所以当一个函数会被多个对象调用时,最好定义成static,这样比较节省空间. 1.3.静态方法只能访问静态成员 原因:如果静态方法中调用了非静态的变量,那么由于静态方法是随着类的加载

黑马程序员——java基础——异常

黑马程序员--java基础--异常 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 异常 就是不正常.程序在运行时出现的不正常情况.其实就是程序中出现的问题.这个问题按照面向对象思想进行描述,并封装成了对象.因为问题的产生有产生的原因.有问题的名称.有问题的描述等多个属性信息存在.当出现多属性信息最方便的方式就是将这些信息进行封装.异常就是java按照面向对象的思想将问题进行对象封装. 异常体系 --------java.lang.Thro

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性