0


大数据学习笔记

大数据(一)

前言

本文章是本人记录自己学习大数据的日常,有些太过于简单或者不重要面试涉及的不多的部分可能会跳过,如果有什么错误或者不妥的地方,欢迎大家指出,新人刚写博客可能有些地方没那么规范希望和大家一起进步,如有侵权请联系我。

第一章 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(最外层)jvm、jre、jdk间的关系

1.2 配置java环境变量

省略,可参考另一篇文章

1.3 编码细节

大小写问题

  1. 源文件名:

在Windows操作系统中.java的源文件名不区分大小写,我们建议大家养成区分大小写的习惯。

  1. 字节码文件名与类名

严格区分大小写

  1. 代码中

严格区分大小写

源文件名与类名一致问题

  1. 源文件名是否必须与类名一致?public呢?

如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。

如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。

我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。

  1. 一个源文件中是否可以有多个类?public呢?

一个源文件中可以有多个类,编译后会生成多个.class字节码文件。

但是一个源文件只能有一个public的类。

  1. 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的数据类型分为两大类:

  • 基本数据类型:包括 整数浮点数字符布尔
  • 引用数据类型:包括数组接口枚举注解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)先算的使用()

口诀:

单目运算排第一;

乘除余二加减三;

移位四,关系五;

等和不等排第六;

位与、异或和位或;

短路与和短路或;

依次从七到十一;

条件排在第十二;

赋值一定是最后;

第三章 数组

标签: java java-ee 面试

本文转载自: https://blog.csdn.net/m0_67991849/article/details/123453039
版权归原作者 水花一直飞 所有, 如有侵权,请联系我们删除。

“大数据学习笔记”的评论:

还没有评论