Java Scala数据类型与变量常量及类和对象超详细讲解

目录
  • 一、数据类型
  • 二、变量和常量
  • 三、类和对象
    • 3.1 类
    • 3.2 对象
    • 3.3 伴生类和伴生对象
    • 3.4 Scala的main函数只能写在object里
    • 总结

一、数据类型

简记: 所有基础类型基本与Java的包装类等同,唯一有不同的Int(Scala),Integer(Java),注意这个就好

Unit, Null, Nothing, Any, AnyRef, AnyVal,这几个除了Null乍一眼会有些陌生,不要怕,上总结:

首先是层级图:

然后是表格:

补丁: 记住Any是所有类型的超类,也就是父类; Nothing是所有类型的子类; Null就是Null; None用在Map类型的value值类型里

二、变量和常量

1.定义变量: var a = 10; 或 var a:Int = 10;

2.定义常量: val a = 10; 或 val a:Int = 10;

建议: scala的理念是简洁优先,一般不会写出返回类型,不过调试代码时我的习惯还是写出来,可以使用IDE自动生成

Scala会对每个变量属性自动生成类似Java中的getter/setter方法,对每个常量生成getter方法

1.变量的getter/setter:

point为一个我们创建的对象,现在要对他的x属性赋值,以及获取他的x属性

 // setter()
 point.x_=(200)
 // getter()
 println("x = " + point.x)

2.常量的getter: 同上

建议:也可以显示写出来getter/setter方法,相当于自定义方法,可能更符合习惯

三、类和对象

谨记:Scala中类还是我们熟悉的class,但是对象object有2个概念,一个是类的引用我们可以称之为类的对象;另一个是object对象,类似Java中的静态工具类,先这么记住,为避免混淆,下文在说对象时一律指Scala中特有的object,类生成的对象后文统一使用类的引用来指代

3.1 类

# 很传统的方式, 调用时直接: val person = new Person()
或者 val person = new Persion  // 无参构造可以不用写小括号
class Person {
  val name = "Cry";
  val age = "77";
}
# 带参数的类定义, 调用时: val person = new Person("Cry",777)
class Person(xName: String, xAge: Int) {
  val name = xName
  val age = xAge
  var gender = 'm'
}
#自定义构造方法:
class Person(xName: String, xAge: Int) {
  val name = xName
  val age = xAge
  var gender = 'm'
  def this(yName: String, yAge: Int, yGender: Char) {
    this(yName,yAge)
    gender = yGender
  }
   def sayName(): Unit = {
    println("Hello Scala..." + this.name)
  }
}

3.2 对象

object中不可以传参,当创建一个object时,如果传入参数,那么会自动寻找object中的相应参数个数的apply方法。

object Person{
  var name = "Cry"
  def apply(name:String): Unit = {
    println("My name is " + name)
  }
}
# 调用: val person = Person("Cry777")

3.3 伴生类和伴生对象

在同一个Scala文件中, class名称和Object名称一样时, 这个类叫做这个对象的伴生类, 这个对象叫做这个类的伴生对象, 他们之间可以互相访问私有变量

3.4 Scala的main函数只能写在object里

可以理解成main函数是静态的,所以推导而出的结论

object Lesson_ClassAndObj {
  def main(args: Array[String]): Unit = {
    val person = new Person("zhangsan", 18)
    val person2 = new Person("lisi", 18, 'f')
    Person("zhaoliu")
  }
}

总结

1.Scala object相当于java中的工具类, object中定义的全是静态的, object不可以传参,对象要传参,使用apply()方法

2.Scala中定义变量用var, 自定义常量用val, 变量可变, 常量不可变. 变量和常量类型可以忽略不写,会自动推断

3.Scala中每行后面都会有分好自动推断机制, 不用显式写出";"

4.建议在Scala中命名使用驼峰命名法

5.Scala类中可以传参, 传参一定要指定类型, 有了参数就有了默认的有参构造方法, 类中的属性默认有getter/setter方法

6.类中重写构造时, 构造中第一行必须先调用默认的构造. def this(…){…}

7.Scala中档new class时, 类中除了方法不执行【除了构造方法】, 其他语句都执行

8.在同一个Scala文件中, class名称和Object名称一样时, 这个类叫做这个对象的伴生类, 这个对象叫做这个类的伴生对象, 他们之间可以互相访问私有变量

到此这篇关于Java Scala数据类型与变量常量及类和对象超详细讲解的文章就介绍到这了,更多相关Java Scala内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 和 Scala 如何调用变参

    Java 和 Scala 都支持变参方法, 写在最后的位置上,最基本的调用方式也都是一样的,一个个罗列过去.也可以传入数组参数,因为变参本质上就是一个数组,就是把 ... 开始位置到最后一个参数都收纳到数组中去,所以变参之所以要放在最后的位置上,且一个方法中最多只能有一个变参类型. 这里主要是对比 Scala 对变参方法的调用,基本调用法当然是没问题的,但是在传入数组作为变参的参数列表与 Java 相对时就稍有变化了. 另外提一下,如果想传入 List 作为变参列表,而不是整体作为变参的第一个元

  • Java和Scala集合间的相互转换方式

    目录 Java和Scala集合间的相互转换 scala与java互转 Java与Scala的集合对比 一.Java集合 1.Collection=>Set接口 2.Collection=>List接口 3.Map接口 二.Scala集合 1.Seq 2.Set 3.Map Java和Scala集合间的相互转换 在scala中,调用一个java的方法,通常需要传递相应的参数.下面是scala与java互转换对应表 Iterator <=> java.util.Iterator Ite

  • Java与Scala创建List与Map的实现方式

    目录 Java与Scala创建List与Map Java自定义map与scala map对比 1. 背景 2. java代码 Java与Scala创建List与Map //Java List<String> languages = new ArrayList<>(); Map<String, Class> mapFields = new HashMap(); //Scala val languages = new util.ArrayList[String] val m

  • 基于Scala和Java方法的相互调用

    目录 在Java中调用Scala的方法呢? 1.首先是静态方法 2. JAVA中调用Scala的方法 3.Scala中的非静态方法 4.Java中的调用 scala中调用java方法报错 在Scala中调用java的方法,很简单,直接导入传递参数就可以进行调用了. 在Java中调用Scala的方法呢? 经过测试,也是很简单,静态方法直接传递参数,就可以调用了,非静态的方法,使用对象也可以调用方法 具体如下: 1.首先是静态方法 object ScalaObjectDemo extends App

  • Java Scala数据类型与变量常量及类和对象超详细讲解

    目录 一.数据类型 二.变量和常量 三.类和对象 3.1 类 3.2 对象 3.3 伴生类和伴生对象 3.4 Scala的main函数只能写在object里 总结 一.数据类型 简记: 所有基础类型基本与Java的包装类等同,唯一有不同的Int(Scala),Integer(Java),注意这个就好 Unit, Null, Nothing, Any, AnyRef, AnyVal,这几个除了Null乍一眼会有些陌生,不要怕,上总结: 首先是层级图: 然后是表格: 补丁: 记住Any是所有类型的超

  • Java 类与对象超基础讲解

    目录 什么是面向对象 面向过程与面向对象 类与对象的使用 类与对象的使用与说明 对象的初始化 this的使用 构造方法 this可以调用本类的构造方法 什么是面向对象 Java语言是一个纯面向对象的语言,面向对象的语言不仅只有Java,包括C++,PHP等 面向对象的编程思想简称 OOP(Object Oriented Programming),其基本特点就是封装,继承和多态. 面向过程与面向对象 想要弄清楚什么是面向对象,首先需要知道两者的区别 面向过程更注重程序的每一个步骤,用相应的函数来实

  • Java 基础语法让你弄懂类和对象

    目录 Java 基础语法 一.类与对象的初步认知 二.类和类的实例化 三.类的成员 1. 字段/属性/成员变量 2. 方法 3. static 关键字 四.封装 1. private 实现封装 2. getter 和 setter 方法 五.构造方法 1. 基本语法 2. this 关键字 六.认识代码块 1. 什么是代码块 2. 本地代码块 3. 实例代码块 4. 静态代码块 七.补充说明 1. toString 方法 2. 匿名对象 八.总结 Java 基础语法 其实在学习 C 语言时就一直

  • Java超详细讲解类的继承

    目录 写在前面 1.子类的创建 1.1子类的创建方法 1.2调用父类中特定的构造方法 2.在子类中访问父类成员 3.覆盖 3.1覆盖父类中的方法 3.2用父类的对象访问子类的成员 4.不可被继承的成员和最终类 实例java代码 写在前面 类的继承可以在已有类的基础上派生出来新的类,不需要编写重复的代码,提高了代码的复用性,是面向对象程序设计的一个重要的特点,被继承的类叫做父类,由继承产生的新的类叫做子类,一个父类可以通过继承产生多个子类,但是与C++不同的是Java语言不支持多重继承,即不能由多

  • Java 超详细讲解类的定义方式和对象的实例化

    目录 1.面对对象的初步认识 1.1什么是面向对象 1.2面向对象与面向过程 2.类的定义与使用 2.1简单认识类 2.2 类的定义格式 3.类的实例化 3.1什么是实例化? 3.2重点笔记 总结 1.面对对象的初步认识 1.1什么是面向对象 用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计.扩展以及维护都非常友好. 1.2面向对象与面向过程 举一个买手机的例子 以面向对象的方式来处理买手机这件事的话,我们就不需要关注买手机的过程,具体手机怎么买,如何到手,用户不用去关心,

  • Java 超详细讲解类的定义方式和对象的实例化

    目录 1.面对对象的初步认识 1.1什么是面向对象 1.2面向对象与面向过程 2.类的定义与使用 2.1简单认识类 2.2 类的定义格式 3.类的实例化 3.1什么是实例化? 3.2重点笔记 总结 1.面对对象的初步认识 1.1什么是面向对象 用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计.扩展以及维护都非常友好. 1.2面向对象与面向过程 举一个买手机的例子 以面向对象的方式来处理买手机这件事的话,我们就不需要关注买手机的过程,具体手机怎么买,如何到手,用户不用去关心,

  • php使用变量动态创建类的对象用法示例

    本文实例讲述了php使用变量动态创建类的对象.分享给大家供大家参考,具体如下: 这是一个能用变量动态创建类的对象的用法,就是根据$pay_code变量值来创建对象. 例如下例就是创建类T的一个对象$payment.然后就可以使用了.咋一看像是个新的知识点,其实不然,只不过是编程中的一个技巧而已. $pay_code='T'; $payment = new $pay_code(); echo $payment; echo $payment->ep(); class T{ function ep()

  • Java 超详细讲解核心类Spring JdbcTemplate

    目录 JdbcTemplate概述 JdbcTemplate开发步骤 JdbcTemplate快速入门 Spring产生JdbcTemplate对象 JdbcTemplate的常用操作 修改操作 删除和查询全部操作 查询单个数据操作 本章小结 JdbcTemplate概述 它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装.spring框架为我们提供了很多的操作 模板类.例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nos

  • Java超详细讲解接口的实现与用法

    目录 1.接口的定义 2.接口的实现 3.接口的引用 4.接口的继承 5.利用接口实现多重继承 1.接口的定义 接口是一种特殊的抽象类,是Java提供的一个重要的功能,与抽象类不同的是: 接口的所有数据成员都是静态的且必须初始化. 接口中的所有方法必须都是抽象方法,不能有一般的方法. [public] interface 接口名称 [extends  父接口名列表]{    [public] [static] [final]数据类型 成员变量名 = 常量;    ...    [public][

  • java反射超详细讲解

    目录 Java反射超详解✌ 1.反射基础 1.1Class类 1.2类加载 2.反射的使用 2.1Class对象的获取 2.2Constructor类及其用法 2.4Method类及其用法 Java反射超详解✌ 1.反射基础 Java反射机制是在程序的运行过程中,对于任何一个类,都能够知道它的所有属性和方法:对于任意一个对象,都能够知道它的任意属性和方法,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制. Java反射机制主要提供以下这几个功能: 在运行时判断任意一个对象所属

随机推荐