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

简介: 第一部分学到面向对象,把一些基础知识进行了学习,因为学过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的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
9月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
441 1
|
10月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
249 1
|
9月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
716 0
|
9月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
855 8
|
10月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
148 5
|
10月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
229 5
|
10月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
257 1
|
10月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
315 3
|
10月前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
159 1
|
10月前
|
设计模式 存储 Java
Java基础学习day07
本节讲解Java中的final关键字、单例设计模式、枚举类、抽象类与接口。涵盖常量定义、单例写法(饿汉式/懒汉式)、枚举特点及应用场景,以及抽象类与接口的使用与区别,助力掌握核心面向对象编程思想。
325 1