scala变量能初始化为null吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala变量能初始化为null吗相关的知识,希望对你有一定的参考价值。

scala变量能初始化为null
<?php
/*
* 配置连接数据库信息
*/
$host='localhost';//主机
$user='root';//数据库账号
$password='';//数据库密码
$database='test';//数据库名
//打开数据库连接
$db=mysqli_connect($host,$user,$password,$database);
//判断连接是否成功
if($db)
$db->query("set names utf8");//设置UTF-8编码(JSON的唯一编码)
else
echo 'DATABASE_CONNECTION_DIE';//数据库连接失败
exit;

//sql查询语句
$sql="select id,name,sex,age from person";
$result=$db->query($sql);
while($row=$result->fetch_assoc())
$person_info[]=$row;//将取得的所有数据赋值给person_info数组

echo json_encode($person_info);//输出JSON
?>
参考技术A 能,但要指定类型

Spark学习scala语法

一,变量

1,基本数据类型

技术图片

2,基本运算符

技术图片

3,定义变量

技术图片

4,复杂变量

技术图片

 (1)定义数组Array:

  •    声明:val aList=new Array[数据类型type](n):声明存储数据类型为type的n个对象,数组初始化为null
  •    声明:val aList=Array(n1,n2,n3...):声明时,可以不用声明数据类型。
  •    调用:aList(m):调用第m个元素。
  •    声明多维数组:val aList=Array.ofDim[数据类型](a,b):声明行为a,列为b的二维数组
  •    调用多维数组中的元素:aList(a1)(b1):调用数组中行为a1,列为b1的元素

(2)定义元组Tuple(对多个不同类型的对象的简单封装):

  •      声明: val tStudent=("name1",23,"男",560.00):声明元组类型学生的信息为(姓名,年龄,性别,月开销)
  •      调用:tStudent._1(取出"name1");tStudent._2(取出23);tStudent._3(取出"男")....

(3)定义容器Collection(导包scala.collection;scala.collection.mutable;scala.collection.immutable)

       scala.collection:封装了可变容器和不可变容器的通用操作的超类(从上到下依次继承都是特质(类似Java的接口),不是具体的容器

       技术图片  技术图片

         foreach方法:遍历当前容器内所有元素

(4)定义序列Sequence(如上图Seq有两个子序列:IndexedSeq和LinearSeq)有存入数据有先后顺序,可以重复

       LindearSeq:列表和队列可以继承该类

                        List(列表):具体的容器类,列表内的对象必须是同类型,列表内的值不可变(必须导包scala.collection.immutable)

                                          定义:val slPeople=List("张三","李四","王五"......)

                                          头部:head;尾部:tail    获取头部(第一个元素:slPeople.head);获取尾部(除去第一个元素以外的元素:slPeople.tail)

                                          向列表头添加新的元素从而生成新的列表:val  slNewList="赵四"::slPeople(不能给列表的尾添加元素)

                                          技术图片

 

                      Range(队列):是一种特殊的带索引的不可变数字等差序列(range内可以存放任何类型数据)

 

                                           定义:val irNum=new Range(n1,n2,m):与Python的range函数功能相同,n1(开始量)n2(结束量,取不到)m(步长)

 

                                            1 to  8  by 1:得到包括8的Range(1,8,1)序列

                                            1 until 8  by 1:得到Range(1,8,1)序列

                                         技术图片

       IndexedSeq:Vector和ArrayBuffer可以继承该类

 

                         Vector(向量):

 

                                               定义:val svPeople=Vector("张三","李四","王五"......)

 

                                               获取元素svPeople(n):获取第n+1个元素

                                               向Vector的头添加元素:svPeople1="赵四"+:"钱七"+:svPeople;向Vector的尾添加元素:val svPeople2=svPeople:+"孙八"

                                          技术图片

 

(5)定义集合Set:存放不重复元素,没有先后顺序,用哈希方法去查找元素(默认为不可变集合)

 

                    可变集:(导包scala.collection.mutable)

 

                    不可变集:(导包scala.collection.immutable)

import scala.util.control.Breaks._;
import scala.collection;
import scala.collection._;
import scala.collection.immutable._;   
var ssPeople=Set("张三","李四");     //Set("张三","李四")是不可变集,将不可变集赋给可变变量ssPeople
ssPeople+="王五";                   //将"王五"赋加给变量ssPeople后生成新的不可变集Set("张三","李四","王五")
import scala.collection.mutable._;    //要定义可变集必须导入这个包
val ssPeople1=Set("张三","李四");      //Set("张三","李四")是可变集,
ssPeople1+="王五";

                  技术图片

(6)定义映射Map:一系列键值对的容器,键唯一但值不唯一(默认为不可变映射)

                    可变映射:(导包scala.collection.mutable)

                    不可变映射:(导包scala.collection.immutable)

import scala.util.control.Breaks._;
import scala.collection;
import scala.collection._;
import scala.collection.immutable._;
var ssPeople=Map("姓名:"->"张三","年龄:"->16);     //不可变映射
import scala.collection.mutable._;    //要定义可变集必须导入这个包
val ssPeople1=Map("姓名:"->"张三","年龄:"->16);     //Set("张三","李四")是可变映射,
ssPeople1+=("性别"->"男","学号:"->20173522);   //向可变映射中添加多个元素
ssPeople1("姓名:")="李四";      //更新可变映射中的元素
ssPeople1("学校:")="石家庄铁道大学";    //向可变映射中添加单个元素
print("查询姓名");
var result=if(ssPeople1.contains("姓名:"))  ssPeople1("姓名:")  else  "无法查询姓名"  //当映射中存在键为"姓名:"则将对应的值赋给result,否则将无法查询xx赋给result
print(s"姓名:$result");

               技术图片

二,输入,输出

     1,从控制台输入(导包:scala.io.StdIn):

          技术图片

      2,输出(默认导包scala.Predef):

          (1)类Java的输出方式: print("姓名:"+name+" 年龄:"+age)或println("姓名:"+name+" 年龄:"+age)

          技术图片

          (2)类C的输出方式:printf("姓名:%s 年龄:%s",name,age)

         技术图片

         (3)s插值字符串输出法:print(s"姓名:$name 年龄:$age")

         技术图片

         (4) f插值字符串输出法(格式化):

         技术图片

三,读写文件(导包java.io.PrintWriter和scala.io.Source)

       1,写入(导包java.io.PrintWriter):向文件test.txt中写入信息:

            技术图片

           技术图片

       2,读取(导包scala.io.Source):

          技术图片

四,控制结构

     1,for结构:

        用法一:基本结构

       技术图片      技术图片

         用法二:for结构中加条件

         技术图片        技术图片

         用法三:支持多个生成器,用;隔开 

        技术图片

        用法四:将遍历的值付给变量

        技术图片

       技术图片

   2,异常处理(try......catch.....)

   3,循环控制(不存在break和continue终止循环)

        使用Breaks类(导包scala.util.control)

       当使用breakable方法:

import scala.util.control.Breaks._;
var i=0;
val array=Array(1,3,6,15,9,12,16);
breakable{      //这个大括号不能换行
    for(i<-array)
    {
        if(i>10) break;   //循环到15直接跳出循环
        print(i+"	");
    }
}

       技术图片

   4,判断值是否存在:contains()

以上是关于scala变量能初始化为null吗的主要内容,如果未能解决你的问题,请参考以下文章

指针变量初始化为NULL啥意思

定义指针变量时,必须将指针变量初始化为NULL(为空),否则,指针变量会由于初始化位置的不确定

大数据开发-Scala 下划线的多种场景

整数总是初始化为0吗?

java中怎么给变量初始化?

Spark学习scala语法