大数据(一)
前言
本文章是本人记录自己学习大数据的日常,有些太过于简单或者不重要面试涉及的不多的部分可能会跳过,如果有什么错误或者不妥的地方,欢迎大家指出,新人刚写博客可能有些地方没那么规范希望和大家一起进步,如有侵权请联系我。
第一章 Java概述
1.1 JVM、JRE、JDK的关系
- JVM(Java Virtual Machine ):Java虚拟机,是运行所有Java程序的假想计算机,是Java程序的运行环境之一,也是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在
JVM
之上。 - JRE (Java Runtime Environment) :是Java程序的运行时环境,包含
JVM
和运行时所需要的核心类库
。 - JDK (Java Development’s Kit):是Java程序开发工具包,包含
JRE
和开发人员使用的工具。 三者之间的关系:jvm(最底层)<jre(中间层)<jdk(最外层)
1.2 配置java环境变量
省略,可参考另一篇文章
1.3 编码细节
大小写问题
- 源文件名:
在Windows操作系统中.java的源文件名不区分大小写,我们建议大家养成区分大小写的习惯。
- 字节码文件名与类名
严格区分大小写
- 代码中
严格区分大小写
源文件名与类名一致问题
- 源文件名是否必须与类名一致?public呢?
如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。
如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。
我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。
- 一个源文件中是否可以有多个类?public呢?
一个源文件中可以有多个类,编译后会生成多个.class字节码文件。
但是一个源文件只能有一个public的类。
- main方法必须在public的类中吗?
不是。
但是后面写代码时,基本上main方法(主方法)习惯上都在public类中。
面试简答题
简答题
(1)Java的基本数据类型有哪些?String是基本数据类型吗?
Java的基本数据类型有:byte,short,int,long,float,double,char,boolean
String是Java的引用数据类型,不是基本数据类型。
(2)float f=3.4;是否正确,表达式15/2*2的值是多少
float f =3.4;//编译报错,因为3.4是double类型,大于float类型15/2*2的值
(3)char型变量中是否可以存储一个汉字?
char型变量中可以存储一个汉字
第二章 Java基础语法
2.1 标识符
简单的说,凡是程序员自己命名的部分都可以称为标识符。
即给类、变量、方法、包等命名的字符序列,称为标识符。
1、标识符的命名规则(必须遵守的硬性规则)
(1)Java的标识符只能使用26个英文字母大小写,0-9的数字,下划线_,美元符号$
(2)不能使用Java的关键字(包含保留字)和特殊值
(3)数字不能开头
(4)不能包含空格
(5)严格区分大小写
2、标识符的命名规范(建议遵守的软性规则,否则容易被鄙视和淘汰)
(1)见名知意
(2)类名、接口名等:每个单词的首字母都大写,形式:XxxYyyZzz,
例如:HelloWorld,String,System等
(3)变量、方法名等:从第二个单词开始首字母大写,其余字母小写,形式:xxxYyyZzz,
例如:age,name,bookName,main
(4)包名等:每一个单词都小写,单词之间使用点.分割,形式:xxx.yyy.zzz,
例如:java.lang
(5)常量名等:每一个单词都大写,单词之间使用下划线_分割,形式:XXX_YYY_ZZZ,
例如:MAX_VALUE,PI
2.2 数据类型
Java的数据类型分为两大类:
- 基本数据类型:包括
整数
、浮点数
、字符
、布尔
。 - 引用数据类型:包括
数组
、类
、接口
、枚举
、注解
。
2.3 变量使用注意事项
1、先声明后使用
如果没有声明,会报“找不到符号”错误
2、在使用之前必须初始化
如果没有初始化,会报“未初始化”错误
3、变量有作用域
如果超过作用域,也会报“找不到符号”错误
4、在同一个作用域中不能重名
5、变量值的类型必须与变量声明的类型一致或兼容(<=)
一致:一样
int age =18;18是int类型的常量值,age也是int类型
兼容:可以装的下,=右边的值要 小于等于 =左边的变量类型
long bigNum =18;18是int类型的常量值,bigNum是long类型
int<longint age =18L; 错误 18L是long类型的常量值,age是int类型
long>int
2.4 计算机存储单位
- 字节(Byte):是计算机信息技术用于计量存储容量的一种计量单位,一字节等于八位。
- 位(bit):是数据存储的最小单位。也就是二进制。二进制数系统中,每个0或1就是一个位,叫做bit(比特),其中8 bit 就称为一个字节(Byte)。
- 转换关系: - 8 bit = 1 Byte- 1024 Byte = 1 KB- 1024 KB = 1 MB- 1024 MB = 1 GB- 1024 GB = 1 TB
2.5 Java的基本数据类型的存储范围
float:单精度浮点型,占内存:4个字节,精度:科学记数法的小数点后6~7位
double:双精度浮点型,占内存:8个字节,精度:科学记数法的小数点后15~16位
2.6 基本数据类型转换
在Java程序中,不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换,基本数据类型转换有两种转换方式:自动类型转换和强制类型转换。boolean类型不参与。
2.6.1 自动类型转换(隐式类型转换)
自动转换:
- 将
取值范围小的类型
自动提升为取值范围大的类型
。
基本数据类型的转换规则如图所示:
(1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时。
int i ='A';//char自动升级为int,其实就是把字符的编码值赋值给i变量了double d =10;//int自动升级为doublebyte b =127;//右边的整数常量值必须在-128~127范围内//byte bigB = 130;//错误,右边的整数常量值超过byte范围long num =1234567;//右边的整数常量值如果在int范围呢,编译和运行都可以通过,这里涉及到数据类型转换long bigNum =12345678912L;//右边的整数常量值如果超过int范围,必须加L,否则编译不通过
(2)当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算。
int i =1;byte b =1;double d =1.0;double sum = i + b + d;//混合运算,升级为double
(3)当byte,short,char数据类型进行算术运算时,按照int类型处理。
byte b1 =1;byte b2 =2;byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为intchar c1 ='0';char c2 ='A';
System.out.println(c1 + c2);//113
2.6.2 强制类型转换(显示类型转换)
将
1.5
赋值到
int
类型变量会发生什么?产生编译失败,肯定无法赋值。
int i =3.14;// 错误
想要赋值成功,只有通过强制类型转换,将
double
类型强制转换成
int
类型才能赋值。
- 强制类型转换:将
取值范围大的类型
强制转换成取值范围小的类型
。
比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行。
转换格式:
数据类型 变量名 = (数据类型)被强转数据值;//()中的数据类型必须<=变量的数据类型,一般都是=
(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出
int i =(int)3.14;//强制类型转换,损失精度double d =1.2;int num =(int)d;//损失精度int i =200;byte b =(byte)i;//溢出
(2)当某个值想要提升数据类型时,也可以使用强制类型转换
int i =1;int j =2;double shang =(double)i/j;
提示:这个情况的强制类型转换是没有风险的。
2.6.3 基本数据类型与字符串类型的转换
1、任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型
System.out.println(""+1+2);//12
2、但是String类型不能通过强制类型()转换,转为其他的类型
String str ="123";int num =(int)str;//错误的int num = Integer.parseInt(str);//后面才能讲到,借助包装类的方法才能转
2.6.4 自加自减运算
理解:
++
运算,变量自己的值加1。反之,
--
运算,变量自己的值减少1,用法与
++
一致。
1、单独使用
- 变量在单独运算的时候,变量
前++
和变量后++
,变量的是一样的; - 变量
前++
:例如++a
。 - 变量
后++
:例如a++
。
publicclassOperatorDemo3{publicstaticvoidmain(String[] args){// 定义一个int类型的变量aint a =3;//++a;
a++;// 无论是变量前++还是变量后++,结果都是4
System.out.println(a);}}
2、复合使用
- 和
其他变量放在一起使用
或者和输出语句放在一起使用
,前++
和后++
就产生了不同。 - 变量
前++
:变量先自身加1,然后再取值。 - 变量
后++
:变量先取值,然后再自身加1。
publicclassOperatorDemo03{publicstaticvoidmain(String[] args){// 其他变量放在一起使用int x =3;//int y = ++x; // y的值是4,x的值是4,int y = x++;// y的值是3,x的值是4
System.out.println(x);
System.out.println(y);
System.out.println("==========");// 和输出语句一起int z =5;//System.out.println(++z);// 输出结果是6,z的值也是6
System.out.println(z++);// 输出结果是5,z的值是6
System.out.println(z);int a =1;
a = a++;//(1)先取a的值“1”放操作数栈(2)a再自增,a=2(3)再把操作数栈中的"1"赋值给a,a=1int i =1;int j = i+++++i * i++;/*
从左往右加载
(1)先算i++
①取i的值“1”放操作数栈
②i再自增 i=2
(2)再算++i
①i先自增 i=3
②再取i的值“3”放操作数栈
(3)再算i++
①取i的值“3”放操作数栈
②i再自增 i=4
(4)先算乘法
用操作数栈中3 * 3 = 9,并把9压会操作数栈
(5)再算求和
用操作数栈中的 1 + 9 = 10
(6)最后算赋值
j = 10
*/}}
- 小结:- ++在前,先自加,后使用;- ++在后,先使用,后自加。
- 分析
publicclassTestIncrementOperator1{publicstaticvoidmain(String[] args){int i =1;
i++;++i;}}
2.6.5 运算符优先级
提示说明:
(1)表达式不要太复杂
(2)先算的使用()
口诀:
单目运算排第一;
乘除余二加减三;
移位四,关系五;
等和不等排第六;
位与、异或和位或;
短路与和短路或;
依次从七到十一;
条件排在第十二;
赋值一定是最后;
第三章 数组
版权归原作者 水花一直飞 所有, 如有侵权,请联系我们删除。