首页 > 编程语言 > 详细

# 大数据工程(一) ## Java基础

时间:2021-03-13 16:54:38      阅读:39      评论:0      收藏:0      [点我收藏+]

# 大数据工程(一)

 

## Java基础

 

程序设计语言

Java每一句执行语句后面有;

回车换行不表明结束,;才表示。

 

编译的过程:编译以后会生成一个或多个字节码文件。字节码文件的文件名与java源文件中的类名相同。运行只运行含main的文件。

 

计算机系统

硬件:

cpu

内存:8bit单元=byte单元

kb mb gb eb zb yb

软件:一系列按照特定顺序组织的计算机数据和指令的集合。分为系统软件和应用软件。

系统软件:

应用软件:

人机交互方式:图形化界面&命令行dos

应用程序=算法+数据结构

算法解决应用程序正确与否。

数据结构解决效率的问题。选择正确的数据结构。

 

### 计算机基础

 

- 计算机概述

 

  两个鼻祖:

  

  图灵:电影《模仿游戏》。

  计算机科学和人工智能之父。

  计算机领域最高奖“图灵奖”。

  国内:姚期智,清华姚班。

  

  冯诺依曼:计算机之父和博弈论之父。

  理论要点-数字计算机的制采用二进制;计算机应该按照陈序顺序执行。

 

- 冯诺依曼体系

 

  现代计算机基础。

 

- 计算机结构

 

- 硬件Hardware

 

  计算机可以看得见的物理部分。

 

- CPU

 

  它从内存中获取指令,然后执行这些指令。

 

  cpu速度的计量单位是赫兹(Hz),1Hz相当于每秒1个脉冲。目前以千兆赫(GHz)来表述。

 

  三个定律:

  摩尔定律

  安迪-比尔定律

  反摩尔定律

 

- 运算器

 

  算数、逻辑单元(arithmetic、logic unit):用于完成数值运算(+,-,*。/)和逻辑运算(比较)。

 

- 控制器

 

  控制单元(control unit):控制代码指令,流程。用于控制和协调其他组件的动作)。

 

- 存储器

 

- 存储设备

 

  内存存取数据的速度比硬盘的存取速度快10倍。而cpu的速度比内存不知道还要快多少倍。把程序从硬盘放到内存后,cpu就直接在内存运行程序,cpu操作的数据都来自于内存,读内存中的数据做运算。

 

  Java在数据当中怎么分配。内存解析。

 

  电脑慢了,调大内存,在内存不够的情况下。换固态硬盘,硬盘给数据速度更快。

 

- 硬盘Hard Disk(ROM手机内存)

 

  写在磁盘上的是永久保存的。

 

- USB

 

- 内存(RAM)Random-Access Memory

 

  数据是如何存储在计算机中的:计算机就是一系列的电路开关,每个电路存在两种状态off(0)和on(1)。

 

  一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位。

 

  计算机中最基本的存储单元是字节(byte)。每个字节由8个比特bit构成。

 

  千字节(Kilobyte)1KB=1024B

  兆字节(Megabyte)1MB=1024KB

  千兆字节(Gigabyte)1GB=1024MB

  万亿字节(Terabyte)1TB=1024GB

 

  内存中的信息断电会丢失。

 

  内存:由一个有序的字节序列组成,用于存储程序及程序需要的数据。

 

  一个程序和它的数据再被cpu执行前必须移动到计算机的内存中。

 

  每个字节都有一个唯一的地址。使用这个地址确定字节的位置,以便于存储和获取数据。

 

  一个计算机具有的RAM越多,它的运行速度越快,但是此规律是有限制的。

 

- 输入/输出

- 通讯设备

 

  调制解调器,网卡

 

- 软件Software

 

  软件是看不见的指令,这些指令控制硬件并且使得硬件完成特定的任务。

 

  软件:即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。

 

  分为:

  操作系统

  应用软件(软件开发=程序设计):

  创建或开发软件。

 

  人机交互方式:

  图形化界面(GUI):

  命令行方式(CLI): 需要有一个控制台,输入特定的指令,让计算机完成一些操作。

 

- 软件

 

- 操作系统软件operating system

 

  是运行在计算机上的最重要的程序,可以管理和控制计算机的活动。

 

  和硬件打交道。

  控制程序。

  用户也可以直接控制操作系统。

 

  window mac linus nuix android ios

 

- 电脑系统

- 手机系统

 

- 应用软件/应用程序

 

  program = Algorithm + data structure

 

  例如:排序

  算法:程序正确与否

  数据结构:载体与效率的问题

 

- 计算机语言/程序设计

 

  程序设计语言:写指令用的语言。

  计算机编程语言介绍:

  第一代语言:机器语言,二进制代码

  第二代语言:汇编语言,助记符

  第三代语言:高级语言,

  面向过程:

  面向对象:java,python,scala,JS

 

  tiobe:语言排行榜

 

- 面向过程

 

  c和c++的开发效率低,执行效率高,做底层

 

- 面向对象

 

  java的开发效率高,执行效率低,社区活跃,第三方框架多,社会web开发

 

  python的开发效率更高,执行效率更低

 

  C#社区活跃和开源不如java

 

- Java语言概述/历史发展

 

  是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以 在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使 用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中。 

 

 

  后台开发:java大公司,php,python小公司,go,node.js,

 

  javase-javaee-javame

  JAVASE(standard)桌面级应用

  JAVAEE(enterprise)web应用程序

  JAVAME(micro)移动端

 

  从Java的应用领域来分,Java语言的应用方向主要表现在以下几个方面: 

  ? 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及 它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电 信、交通、电子商务等。 

  ? Android平台应用:Android应用程序使用Java语言编写。Android开发水平的高低 很大程度上取决于Java语言核心能力是否扎实。 

  ? 大数据平台开发:各类框架有Hadoop,spark,storm,flink等,就这类技术生态 圈来讲,还有各种中间件如flume,kafka,sqoop等等 ,这些框架以及工具大多数 是用Java编写而成,但提供诸如Java,scala,Python,R等各种语言API供编程。 

  ? 移动领域应用:主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手 机、PDA、机顶盒、汽车通信设备等。 

 

  Java两种核心机制 

  ?Java虚拟机 (Java Virtal Machine) ?垃圾收集机制 (Garbage Collection)

 

- 开发环境

 

- 环境搭建

 

- 环境变量

 

- 常用的java开发工具IDE

 

  (Integrated Development Environment)

 

- Eclipse/IDEA使用 

 

- Hello World

 

  public class Test{ 

  public static void main(String[] args) { System.out.println(“Hello World!”); 

  } 

  } 

 

  对第一个java程序进行总结:

  编写:我们将编写的java代码保存在以“.java”结尾的源文件中

 

  编译:使用javac.exe命令编译我们的java源文件。生成字节码文件.class,有几个class生成几个。

  javac ChairMan(文件名).java

 

  运行:使用java.exe命令解释运行我么的字节码文件。只运行包含main方法的类。

 

  在一个java源文件中可以声明多个class,但是只有一个public,只能是和文件名同名的类上。

  java ChairMan(类名)

 

  ?Java应用程序的执行入口是main()方法。它有固定的书写格式: public static void main(String[] args) {...} 

 

  ?输出语句System.out.println 先输出后换行

 

  ?Java语言严格区分大小写。 

 

  ?Java方法由一条条语句构成,每个语句以“;”结束。

  ?大括号都是成对出现的,缺一不可。

 

- 编写

 

- 编译

 

  语法层面报错

 

- 运行

 

  计算上的错误

 

- 编程风格

 

  行尾风格

 

  运算符和符号两边各加一个空格。

 

- 注释comment

 

  ?单行注释 

  ?格式: //注释文字 

 

  ?多行注释 

  ?格式: /* 注释文字 */ 

 

  作用:

  1.对所写的程序进行解释说明,增强可读性。方便自己,方便别人。

  2.调试所写代码,对怀疑有问题的代码进行注释,排查bug。

 

  ?文档注释(Java特有) 

  ?格式:/** 

  @author 指定java程序的作者 @version 指定源文件的版本 

  */ 

  ? 文档注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形 式体现的该程序的说明文档。

 

- 单行

 

- 多行

 

- 文本

 

- debug断点异常调试

- Java API

 

  。。。

 

- Java新特性

- Subtopic 4

 

- 万维网www(简称web)

 

  是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资源”;并且由一个 全局“统一资源标识符”( URI )标识 ;这些资源通过 超文本传输协议( Hypertext Transfer Protocol 传送给用户,而后者通过点击链接来获得资源 。

 

  就是平时上网的过程。

 

  互联网>因特网>万维网

 

- web客户端

 

  常用浏览器,访问web服务器上的页面。

 

  B/S browser server:浏览器(特殊的客户端)

 

  C/S client server:客户端 wechat,QQ。。

 

- web服务器程序

 

### 基础程序设计

 

- 基础语法

 

- 关键字Key Word/保留字reserved word

 

  ?关键字(keyword)的定义和特点 ?定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) ?特点:关键字中所有字母都为小写

  ?官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

 

- 标识符Identifier

 

  ?标识符:

  ?Java 对各种变量、方法和类,接口,包等要素命名时使用的字符序列称为标识符 ?技巧:凡是自己可以起名字的地方都叫标识符。

 

- 组成和注意事项

 

  ?定义合法标识符规则: 

  ?由26个英文字母大小写,0-9 ,_或 $ 组成 

  ?数字不可以开头。 

  ?不可以使用关键字和保留字,但能包含关键字和保留字。 

  ?Java中严格区分大小写,长度无限制。 ?标识符不能包含空格。

 

- 命名规则

 

  ?Java中的名称命名规范: 

  ?包名:多单词组成时所有字母都小写:xxxyyyzzz 

  ?类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz (大驼峰)

  ?变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz (小驼峰)

  ?常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 

 

  ? 注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。 

  ? 注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

 

- 常用内部类API(直接可用的功能)

 

  API写好的

  直接拿过来用

 

- 输入scanner/输出print

 

  scanner键盘录入提高交互性

  使用:

  1导包,写好的直接用(放在class上面)

  import java.util.scanner

  2创建对象

  scanner sc = new Scanner(System.in)

  这一步可快速导包

  System.out.println("请输入一个数据:")

  3接收数据

  int x = sc.nexInt

  System.out.println(x)

 

  println 输出再换行

  print不换行

 

  控制台程序

 

- Random随机生成

 

  Random类 生成随机数 用法同scanner

  创建对象:

  Random rd = new Random();

  获取随机数:

  Int num = rd.nextline(20);

  -0-19不包括20

  -contrl+shift+O导入包

  产生1-50的随机数:

  Int num = rd.nextline(50)+1;

  获取多次随机数,中间加入循环语句:

  for(int i=1, i<20, i++){

  sys...

  }

 

 

  练习

 

- ...

 

- Java中的内存分配

 

  Java中的内存分配:程序在执行过程中,需要在内存中分配空间。为了提高运算效果,对内存空间进行了不同区域的划分,每一片区域都有特定的处理数据的方式和内存管理方式。

 

  栈:储存局部变量:定义在方法中的变量

  堆:存储new出来的东西,实例对象:每一个对象都有地址值;每一个对象数据都有默认值,byte,short,int,long是0,float,double是0.0,char是\u000,boolean是false,引用是null。

  方法区:面向对象的。。。

  本地方法区:和系统有关

  寄存器:给cpu使用

 

  空指针问题:

  array = null 数组已经不指向堆内存数据,无法再访问到,空指针问题

 

- 栈内存Stack

- 堆内存Heap

 

- new

 

- 方法区

 

- 变量/常量

 

  java变量是有类型的

  在使用变量前必须定义(初始化)

 

- 变量概念

 

  ?变量的概念:

  ?内存中的一个存储区域 ?该区域的数据可以在同一类型范围内不断变化 ?变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值 

 

  表达式:

  数据类型 变量名 = 存储的值(初始化值)

 

  final 数据类型 变量名 =

  final变量不能被更改

 

  ?变量的作用: 

  ?用于在内存中保存数据 

  ?使用变量注意: 

  ?Java中每个变量必须先声明,后使用 ?使用变量名来访问这块区域的数据 

  ?变量的作用域:其定义所在的一对{ }内 ?变量只有在其作用域内才有效 

  ?同一个作用域内,不能定义重名的变量

 

- 变量表达式

 

  ?声明变量

  ? 语法:<数据类型> <变量名称> 

  ? 例如:int var; 

 

  ? 变量的赋值

  ? 语法:<变量名称> = <值> 

  ? 例如:var = 10; 

 

  ? 声明和赋值变量

  ? 语法: <数据类型> <变量名> = <初始化值> 

  ? 例如:int var = 10;

 

- 标识符

 

- 标识符命名

 

- 变量注意

 

  1.变量必须先声明、赋值之后再使用。

  2.变量都有所定义的作用域,一对{}内。

  3.同一个作用域内不可以声明两个同名的变量。

 

 

  ?使用变量注意: 

  ?Java中每个变量必须先声明,后使用 

  ?使用变量名来访问这块区域的数据 

  ?变量的作用域:其定义所在的一对{ }内 

  ?变量只有在其作用域内才有效 

  ?同一个作用域内,不能定义重名的变量

 

- 变量的分类

 

- 按数据类型不同

 

  ?对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分变量的分类-按数据类型 配了不同大小的内存空间。

 

- 基本数据类型primitive

 

  8种基本数据类型

 

- 数值型

 

- 整数类型

 

  正负都可以

 

  ?Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保 证java程序的可移植性。 

  ?java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’ 

  ?java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long 

    类型       占用存储空间        表数范围 

    byte       1字节=8bit位         -128 ~ 127 

    (一个byte表256个数,负128正127)

    short      2字节=16位        -215 ~215-1 

    int           4字节  -231 ~ 231-1 (约21亿) 

    long        8字节                -263 ~ 263-1 

 

  500MB 

  1MB = 1024KB 

  1KB= 1024B 

  B= byte ? bit? 

 

  bit: 计算机中的最小存储单位。

  byte:计算机中基本存储单元。

 

- byte, short, int, long

 

  byte b1 = 12;

  byte b2 = -128;

  short s1 = 123;

  int i1 = 1234;

  long l1 = 343556736225L;

 

- 浮点类型

 

  ?与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作 

  系统的影响。 

  ?浮点型常量有两种表示形式:

  ? 十进制数形式:如:5.12 512.0f .512 (必须有小数点) ? 科学计数法形式:如:5.12e2 512E2 100E-2 

  ? float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。 double:双精度,精度是float的两倍。通常采用此类型。 

  ? Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。

 

- float, double

 

  类型     占用存储空间               表数范围 

  单精度float 4字节     

  -3.403E38 ~ 3.403E38 

  双精度double 8字节 

  -1.798E308 ~ 1.798E308

 

- 字符型

 

  ?char 型数据用来表示通常意义上“字符”(2字节) 

  字符类型:char ?Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字 

  母,一个汉字,或其他书面语的一个字符。 

  ?字符型变量的三种表现形式: 

  ?字符常量是用单引号(‘ ’)括起来的单个字符定义声明。例如:char c1 = ‘a‘; char c2 = ‘中‘; char c3 = ‘9‘; 

  ? Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。 例如:char c3 = ‘\n’; // ‘\n‘表示换行符 

  ?直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表 一个十六进制整数。如:\u000a 表示 \n。 

  ?char类型是可以进行运算的。因为它都对应有Unicode码。

 

- char

 

  char c2 = ‘1‘;

  char c3 = ‘中‘;

 

 

 

  可以声明为转义字符:

  ? Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。 例如:char c3 = ‘\n’; // ‘\n‘表示换行符 

  c5 = ‘\t‘; 表示制表符tab键

 

  ?char类型是可以进行运算的。因为它都对应有Unicode码。 (ascII码)【字符编码集】

  char c6 = ‘\u0043‘;

 

- 字符编码集

 

  计算机的底层都是二进制的码

 

- ascII码

- unicode

 

- utf-8

- GBK-ANSI

 

- 布尔型

 

- boolean:true/false

 

  true,1

  false,0

 

  ?boolean 类型用来判断逻辑条件,一般用于程序流程控制: 

  ?if条件控制语句; ?while循环控制语句; ?do-while循环控制语句; ?for循环控制语句; 

  ?boolean类型数据只允许取值true和false,无null。 

  ?不可以使用0或非 0 的整数替代false和true,这点和C语言不同。 

  ?Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的 boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false 用0表示。———《java虚拟机规范 8版》

 

- 基本类型转换/运算

 

  不包含boolean类型,只有其他7种类参与转换、计算。

 

- 算数运算

 

  7种

 

- 自动类型提升

 

  当容量小的数据类型与容量大的数据类型的变量做各种运算时,结果自动提升为大的类型。

  往高级的靠,不然会精度损失,一部分值存不下来。。。

  此时的容量大小指的是,表示数的范围的大小。比如float>long。

 

  char  =int />short

 

  自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容 

  量大小排序为: 

  byte,char,short->int->long->float->double

  ?有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的 那种数据类型,然后再进行计算。 

  ?byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。 

  ?boolean类型不能与其它数据类型运算。

 

- byte,char,short->int->long->float->double

 

  特别的:当byte,char,short三种类型的变量做运算时,结果为int类型。同种类型做运算结果也是int型来接收。

 

- 强制类型转换:损失精度

 

  ?需要使用强转符()

 

  ?自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使 用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。 

 

  ?如果本来的数据就小,就没有精度损失

 

  ?boolean类型不可以转换为其它的数据类型。

 

- 使用强转符()

 

  小数点是截断,不是四舍五入,损失了精度。

 

 

  int i1 = 128;

  byte b = (byte)i1;

  System.out.println(b);

 

  结果为-128(用二进制来解释)

 

- 两个特殊情况

 

  编码情况1:

  long 1 =  123213; (int转long可以)

  long 2 = 278945872950802;(不加L就不行超过int了)

  float f1 = 12.3;(不加F是double比float大不能自动转换)

 

  编码情况2:

  整型常量,默认类型为int型

  浮点型常量,默认类型为double型

 

- 连接运算

 

  8种

 

  +前后只要有一个类型是string,就是连接的。

 

- 基本数据类型+“字符串”

 

  ?当把任何(8种)基本数据类型的值和字符串(String)进行连接运算时(+连接符号),基本数据类 型的值将自动转化为字符串(String)类型。 

 

  ? String不是基本数据类型,属于引用数据类型

  ? 使用方式与基本数据类型一致。例如:String str = “abcd”;

  ? 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。例如: 

  str = str + “xyz” ; 

  int n = 100;

  str = str + n; 

 

  ?通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可 以实现把字符串转换成基本类型。 

  ?如: String a = “43”; int i = Integer.parseInt(a); 

 

  “”可以

  ’‘不可以

  ’ ‘可以,存了个空格

 

- 变量之进制

 

  ? 所有数字在计算机底层都以二进制形式存在。 

 

  ? 对于整数,有四种表示方式: 

  ?二进制(binary):0,1 ,满2进1.以0b或0B开头。 ?十进制(decimal):0-9 ,满10进1。 ?八进制(octal):0-7 ,满8进1. 以数字0开头表示。 

  ?十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。 如:0x21AF +1= 0X21B0 

 

  呈现出来的都是十进制

 

- 二进制0b/0B

 

  int num1 = ob110;   6

 

- 十进制

 

  int num2 = 110;   110

 

- 八进制0

 

  int num3 = 0127;  87

 

- 十六进制0x/0X

 

  int num4 = 0x110A;  4362

 

- 进制转化

 

- 二与十

- 二与八和十六

 

- 引用数据类型reference

 

- 数组Array

 

  Java数组时一种数据的容器

  1.数组中的元素数据类型相同

  2.数组长度length,即有多少个数组

  3.元素数据有排序位置:索引(从0开始,长度-1)

 

  数组可以存储多个变量。是可以存储多个相同数据类型(元素)的有序容器。

  基本数据类型,引用数据类型

 

- 创建数组

 

  ? 一维数组的声明方式: type var[] 或 type[] var; 

  ?例如: 

  int a[];

  int[] a1;

  double b[];

  String[] c; //引用类型变量数组 

 

  ? Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法 

 

  创建定义数组格式:

  数据类型 []数组名;   --多用这个

  数据类型 数组名[];

 

  1 第一种定义方式, 定义的同时给赋了初始值, 也是第一种赋值方式: 

  int[] arr = {1,2,3,4,5,6,7,8,9,10}; 其实这是一种连写,本质是是两个步 骤: 

  第一步: int[] arr; //定义或叫声明一个 整数类型的数组变量 arr 

  第二步:arr = {1,2,3,4,5,6,7,8,9,10}; // 给整数类型的数组变量 arr 赋值, 注意可以这样理解,但是没这种赋值的语法 

  2 第二种定义方式, 和第一种本质一样,只是写法不一样:

  int[] arr = new int[]{20,30,40}; // 可以理解第一种写法是这种写法的 

  简化,省略new int[]关键字 

  3 第三种定义方式, 定义就只是定义, 没给赋初始值:

  int[] arr = new int[3]; // 定义数组变量的时候没赋值,必须要指定数组的 

  长度 

  定义好数组变量后, 可以这样给单个单个数组元素赋值, 这是第三种赋值方式: arr[0] = 11;

  arr[1] = 12;

  arr[2] = 13; 

  给数组元素赋值,除了可以直接用字面量常数外,也是可以赋值另一个变量的。 int a = 10;

  int b = 20 ;

  // 这样是可以的,因为a和b都是int类型—— 

  arr[0] = a; arr[1] = b;

 

- 初始化数组

 

  定义之后并没有储存

 

  数组初始化:为数组开辟内存空间,并为数组中的每个元素赋予初始化值

 

  两种方式:数值为0

  1.动态初始化 只需要给出数组的长度,系统会默认给出初始化值。

  数类型[] 数组名 = new 数类型[长度]

  int[] array = new int[10]

  2.静态初始化 可以直接给出初始化值,由系统决定数组长度,数组元素个数。

  []:声明这是一个数组

  new:为数组申请内存分配的,开辟内存空间,堆空间储存

 

- 动态初始化

 

  动态初始化:

  int[] array = new int [3]

  array[0]=1

  array[1]=2

  array[2]=3

 

- 静态初始化

 

  指定每个数组元素的初始化值,长度由系统决定

  数据类型[]数组名=new 数据类型[]{元素1,2,3}

 

- 数组内存

 

  栈:储存局部变量:定义在方法中的变量

  堆:存储new出来的东西,实例对象:每一个对象都有地址值;每一个对象数据都有默认值,byte,short,int,long是0,float,double是0.0,char是\u000,boolean是false,引用是null。

 

- 默认初始值

 

  ?对于基本数据类型而言,默认初始化值各有不同 ?对于引用数据类型而言,默认初始化值为null(注意与0不同!)

 

- 一个数组

- 两个数组

- 两个数组指向同一个地址

 

  一个数组地址赋值给第二个,两个数组指向同一个地址。

  int[] array2= array1;

 

- 数组中元素的获取

 

  直接输出数组名获取的是地址值。

  我们想获取数组中的元素,数组中每个元素都是有编号(索引下标)的,从0开始,最大的编号是数组长度-1。

  数组名[索引]

 

  获取数组的长度(个数)

  array.length

 

- 取值

 

  取值: 取出数组元素的值是通过数组的变量名+索引值的方式取出,

  语法: 变量名 [索引值] 

  System.out.println(array[0])

 

 

  System.out.println(array)

  直接打印输出数组名获取的是数组的地址值。

 

- 数组遍历

 

  获得数组中所有数据

  遍历:依次输出数据中的每一个元素

  通过for循环实现

 

  数组的遍历: 

  1、for循环 

  for(int i = 0 ; i < arr.length; i++){ System.out.println(arr[i]); 

  } 

  2、foreach循环 

  for(int i:arr){ System.out.println(i); 

  }

 

- 获取最值

 

  获取最大值、最小值

 

  int max = array[0]

 

  for.....

  if(array[x]>max){

  max=array[x];

 

- 数组类型

 

- 一维数组

- 二维数组

 

- 二维数组遍历

 

- 多维数组

 

- 面向对象数组

 

  通过数组类的构造方法构造数组:

 

  public static void main...

 

  class ArrayClass{

  用类的属性封装数组变量

  private long[] arr;

  private int nElems;当前存在数组长度

 

  用构造函数初始化数组

  public ArrayClass(int maxSize){最大长度

  arr=new long[maxSize];

  nElems=0;

  }

  }

  }

 

- 类Class

 

- 字符串string类

 

  使用方式与基本数据类型一致。例如:String str = “abcd”;

 

- ....

 

- 接口API(interface)

 

- 按声明的位置不同

 

  ? 在方法体外,类体内声明的变量称为成员变量。 

  ? 在方法体内部声明的变量称为局部变量。 

 

  ●注意:二者在初始化值方面的异同:

  同:都有生命周期 

  异:局部变量除形参外,需显式初始化。

 

- 成员变量

 

- 实例变量(不以static修饰)

- 类变量(以static修饰)

 

- 局部变量

 

- 代码块局部变量(在代码内定义)

- 方法局部变量(在方法内定义)

- 形参(方法、构造器中定义的变量)

 

- 运算符

 

  运算符是对常量和变量进行代码操作的符号

 

- 算数运算符

 

- +, -, *, / ,%, ++ ,--

 

  1.整数相除/只能得到整数

  2.字符串”“参与+运算实际上是拼接

  3.字符参与运算是字符在计算机里储存的数据值参与运算A=65 a=97

  4.自增自减运算符++,--对变量做加1减1操作(++a/a++),前++和后++。

  5.自增自减运算符既可以放在变量的后面使用,也可以放在前面。单独使用,无论放在前面还是后面,结果一样。

  6.参与运算时,放在后面,变量先做操作再做加减1;放在前面,先做加减1再做操作。

  ia = 3;

  int ib = ia++

  ib=3

  intid =++ia

  ib=4

  --------

  System.out.println(ia++);//4(结束以后ia是5)

  System.out.println(++Ia);//6(5+1=6)

  7.%取余运算符,模

 

- 除以/

 

  除号/

  int num1 = 12;

  int num2 = 5;

  int result = num1 / num2; //2

  int result2 = num1 / num2 * num2;  //10

  double result3 = num1 / num2; //2.0

  double result4 = num1 / num2 + 0.0; //2.0

  double result5 = num1 / (num2 + 0.0);//2.4

  double result6 = (double)num1 / num2;

 

- 取模%

 

  最终结果的符号和被模数一样。

  开发中,经常使用%来判断能否被除尽的情况。

 

- 自加子减++,--

 

  自增1

 

  先自增1,然后再运行。

  前++

  前--

 

 

 

  先运行,然后再自增1。

  后++ 

  后--

 

 

  自增1不会改变本身的数据类型

  short s1 = 10;

  s1 = s1 + 1; //编译失败

  s1 = (short) (s1 + 1); //right

  s1++; result will be short type.

 

  开发中需要自增1都用++

 

  byte bb1 = 127;

  bb1++; //-128(originally)

 

- 前++,后++

- 前--,后--

 

- 字符串连接+(见上)

 

- 赋值运算符

 

- 简单赋值运算符=

 

  int a = 10

  把10赋值给int类型变量a

 

  符号:= 

  ?当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制 类型转换原则进行处理。 

 

  ?支持连续赋值。

  i2 = j2 = 10;

  i3 =10, j3 = 20;

 

- 复合赋值运算符+=,-=,*=,/=,%=

 

  加赋值,减赋值,。。。。取余赋值

 

- 关系/比较运算符

 

- ==, !=, >, <, >=, <=

 

  1.用来比较两个表达式大小或值大小关系的标识符,

  2.关系运算符的结果是boolean类型的:true,false

  3.不支持10<= ia <= 99这种语法格式

  通过逻辑运算符来处理

  boolean = c = (a==b)

  System.out.println(c)

 

- 逻辑运算符

 

- &&(与) ||(或)!(非)

 

  操作数为boolean表达式

  &&与 相当于并且 同真为真 一假为假

  ||或 相当于或者 一真为真 同假为假

  !非 相当于取反 真为假 假为真

 

- 条件/三元(目)运算符

 

- (a>b)?a:b

 

  语法格式:

  条件表达式?表达式1:表达式2;

  执行流程

  先来计算关系表达式的结果,看是true还是false

  若成立true,则执行表达式1

  若不成立false ,则执行表达式2

  int a = 10

  int b =20

 

  in c = (a>b)?a:b

 

  temp max

 

- 位运算符

- 位移运算符

- 运算符之间的优先级

 

- 流程控制语句

 

- 顺序结构

- 选择结构

 

  1.if语句

  第一种格式:

  if(关系表达式){

  语句体;

  }

  true执行 false不执行语句体

  第二种格式:两种情况判断

  if(关系表达式){

  语句体1;

  }else{

  语句体2;

  }

  第三种格式:多种情况判断

  if(关系表达式1){

  语句体1;

  }else if(关系表达式2){

  语句体2;

  }else if(关系表达式3){

  语句体3;

  }

  ...

  else{语句体你;

  }

 

  2.switch语句,依次比较

  switch(){

  case 值1:

  语句体1;

  break;

  case 值2:

  语句体2;

  break;

  case 值3:

  语句体3;

  break;

  ...

  default:

  语句体n;

  break

  }

  格式说明:

  表达式:byte,short,int,char

    JDK5以后可以是枚举

  JDK7以后可以是字符串

  Case的值:就是用来和表达式进行匹配的

  break:中断的意思,没有会穿透

  default:最后都不满足执行的语句体

 

 

 

  枚举:

  enum Colour{green,yellow,red

  }

  switch(Colour.red)

 

- if

 

  1.if语句

  第一种格式:

  if(关系表达式){

  语句体;

  }

  true执行 false不执行语句体

  第二种格式:两种情况判断

  if(关系表达式){

  语句体1;

  }else{

  语句体2;

  }

  第三种格式:多种情况判断

  if(关系表达式1){

  语句体1;

  }else if(关系表达式2){

  语句体2;

  }else if(关系表达式3){

  语句体3;

  }

  ...

  else{语句体你;

  }

 

- switch

 

  2.switch语句,依次比较

  switch(){

  case 值1:

  语句体1;

  break;

  case 值2:

  语句体2;

  break;

  case 值3:

  语句体3;

  break;

  ...

  default:

  语句体n;

  break

  }

  格式说明:

  表达式:byte,short,int,char

    JDK5以后可以是枚举

  JDK7以后可以是字符串

  Case的值:就是用来和表达式进行匹配的

  break:中断的意思,没有会穿透

  default:最后都不满足执行的语句体

 

 

 

  枚举:

  enum Colour{green,yellow,red

  }

  switch(Colour.red)

 

- break停止

 

- 循环结构

 

  实战开发中用的最多的,需要反复执行某一段代码时使用

 

  4个组成:

  初始化语句

  判断条件语句:关系表达式

  控制条件语句:循环执行部分

  循环语句:循环结束后++--

 

  三种循环语句

  1.for循环

  2.while循环

  3.do...while循环

 

- for

 

  for(初始化;判断条件;控制条件){

  循环体语句;

  }

  执行流程:

  1.初始化语句

  2.判断条件语句 false结束 true继续

  3.执行循环体语句

  4.执行控制条件语句

  5.回到第二部继续

  for(i=1, i>+10, i++){

  循环体语句

  }

 

  练习

  求1-100的和

  偶数和

 

- while

 

  初始化语句

  while(判断条件语句){

  循环体语句

  控制条件语句

  }

 

  int 1 = 1 

  while(i>+10){

  sys....

  i++/break

  }

 

  成立就继续执行

  while(true){

  循环体语句

  break

  }

 

  练习1-100的和

 

- continue跳过

 

  在循环语句中使用,离开循环场景无法使用

 

  for(int i=1,i<+10, i++){

  if(i==5){

  continue

  }

  }

  t跳过第5次循环

 

- do...while

 

 

 

# 大数据工程(一) ## Java基础

原文:https://www.cnblogs.com/florencew512/p/14529252.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!