大数据学习记录---JAVA篇---基础语法部分

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 第一部分学到面向对象,把一些基础知识进行了学习,因为学过C和python,算是速过了一下基础,主要记录一些自己不熟悉的地方,以便日后可以回想起来。

JAVA概述与基本语法

一、JDK的组成

image.png
了解JVM,JRE,JDK的基础概念,更好的理解JAVA语言程序的运行。

二、IDEA的一些知识

注释在了IDEA中的第一个JAVA项目里,可自行翻看(其实用了就知道了,主要就是项目结构和快捷方式)

三、JAVA的基础语法

1、注释的方式

image.png
主要就是没见过文档注释

2、变量的定义

a、注意变量的声明定义只需一次,后续调用变量不能重复的声明,否则视为定义重名的变量
b、变量的定义只在当前{}下有效,跳出当前{}则变量就无了

3、数据类型

a、整型有byte、short、int(默认,4个)、long,浮点型有float(4个)和double(8个),字符有char(2个),布尔有boolean不同在于存储所占的字节数,也决定了数的上下限。
b、在你定义时,随便写的数值,如果是整型默认是int,小数默认是double。如果想定义成其他需要加后缀,例如: long int a = 2l/2L(加后缀l/L),float的后缀是(f/F)定义同上。

4、数据类型转换

a、自动类型转换---小范围可以直接赋给大范围,表达式中小范围自动提升成大范围再一起算。除此还有像byte,short会自动转成int再算,int是默认且最常用的。
b、强制类型转换---如果要大范围赋给小范围就得用,写法和python有点不同,例如:b=(int)a ,可能导致数据丢失,其次在小数转整数的时候也可能会用。

5、运算符

a、基本C、JAVA、Python的运算符都差不多
b、+(加号)在数字和字符串一起运算的时候会充当连接符,最后得到字符串,但是数字和字符算是ASCII加最后结果还是数字。
c、JAVA不需要格式化输出,上面说的"+"充当连接符可以直接把不同类型的输出混在一起,很方便!
d、三元运算符, 格式——条件表达式?值1:值2,例如:

int max_num = num1>num2? num1:num2;

6、流程控制的结构

a、while就是先在外面定义好用来判断的变量flag、k、count然后在执行语句里做变化,最后这个变量是保存下来的,不像for中i,j用完就释放了。一般用于循环次数未知,循环条件是某个更具体的判断。
b、其他结构都差不多,就是switch和do while 不怎么用,语句格式注意一下。
c、break和continue都是在循环里做跳出了,不能用于if语句,但break可以用在switch里。

7、JAVA的一些内置API的使用

a、上面提到的java核心类库中写好了很多java类可以直接调用,具体可以去官网下文档查看。
b、举个例子:如随机数生成

  • 导入包(其实不需要自己导,你调用的时候会自动帮你import)
  • 实例化,(具体实例化方法,每个API也不同,可以看文档示例)
Random r = new Random()
  • 调用方法
int i = r.nextInt(10)  //输出0-9的随机数

c、再举个例子:键入Scanner

  • 导入包(其实不需要自己导,你调用的时候会自动帮你import)
  • 实例化
Scanner sc = new Scanner(System.in)
  • 调用方法
String name = sc.next() // 键入字符串

8、java数组

a、定义格式,跟c和python还不太一样

  • 首先括号写前面,例如:int[] a = {1,2,3},就很清晰知道是个什么类型的数组

b、两种定义方式--静态和动态——(java数组必须先定义好长度,系统才能去分配空间,和python不太一样)
--静态:

double[] b ={1.0,2.0,3.0} //(提供初始值)

--动态:

double[] k = new double [3] //(不用提供初始值,系统用默认值先存,需要定义好长度)

image.png
c、java中数组的定义类似于C++中的指针,本质上数组名存储内存开辟的数组的首地址,如果执行如下赋值操作:---int[] a = b ;这时a,b将指向同一个数组,用任何一个数组名修改对应索引,最后都会改变。

int[]a = new int[100] //这个java写法与下面c的写法等同
int*a = new int[100] //(C或者C++的写法)

d、可能要用到数组的拷贝的方法:

int[]b = Arrays.copyOf(a,length)//length可任意。此时a,b相互独立

Arrays这个类里提供了很多数组操作的方法:如sort,toString,deepToString等。
e、数组的遍历,传统for循环方法, a.length表示数组a的长度,用来限定循环次数
f、二维数组,书上有讲,定义,遍历,初始化方法都类似,例如:

double[][]a=new double[2][5]
  • JAVA实际上是没有二维数组的,二维数组也是相当于存了多个一维数组,数组中每个元素存另外多个一维数组的位置,所以二维数组还能是不规则的,也就是每一行都代表一个一维数组,且长度不一样。

g、这里提供一种快速打印数组的方式:

System.out.println(Array.toString(a))//一维数组快速打印
System.out.println(Array.deepToString(b))//二维数组快速打印

h、java程序执行时的内存分配(感觉和单片机的工作区有相似处)
image.png

---方法区,栈内存,堆内存

9、方法--在面向对象,类中函数就叫方法

a、方法的定义和使用
--方法因为是在面向对象的类里的,所以没有顺序区别,也不用声明(和C不太一样)
--前面有个修饰符,后面面向对象会具体讲,现在固定为public static,后面就明白了
--其他写法和python,c都差不多,形参,返回啥的。
b、方法的内存机制
--其实就是程序调用不同方法的时候,内存的使用方式。主要涉及方法区和栈内存。
--首先把类class和定义的各个方法放入方法区
--接着就是从main方法开始,按照调用顺序把方法压入栈内存中,从上往下,执行完释放。
image.png
image.png
image.png
c、方法的参数传递
--形参,实参,都是作值传递
--基本类型的参数,传递的是数值,不改变实参本身。
--引用类型的参数(如:数组),传递的是地址,会改变实参本身,因为传入的是指向堆内存中的地址,做一些修改操作的时候,会改变堆内存中的值。
image.png
d、方法的重载
--同一个类中有多个方法名称相同,但是形参列表不同,这些方法就是重载的方法 (修饰符,返回值无所谓)
--调用方法会自动通过形参来判断是哪个方法,所以是可以同名的

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
3月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
59 1
|
3月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
44 2
|
3月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
113 43
Java学习十六—掌握注解:让编程更简单
|
1月前
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
51 3
|
3月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
53 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
56 1
|
3月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
37 1