第十篇实习日记

Scala基础(2)

循环

Scala中的循环主要有for循环、while循环和do while循环三种。
1、for循环
for循环的语法:
for(变量<-集合或数组){
方法体
}

例如,循环从1到5输出变量i的值:
scala> for(i<- 1 to 5) println(i)
若不想包括5,可使用关键字until:
scala> for(i<- 1 until 5) println(i)
将字符串“hello”中的字符循环输出:
scala> val str=“hello”
scala> for(i<-0 until str.length) println(str(i))
将字符串看做一个由多个字符组成的集合,简化写法:
scala> for(i<-str) println(i)

2、while循环
while循环的语法:
while(条件)
{
循环体
}

例如:
scala> var i=1
i: Int = 1

scala> while(i<5){
| i=i+1
| println(i)
| }

3、do while循环
do while 循环与while循环类似,但是do while循环会确保至少执行一次循环。语法:
do {
循环体
} while(条件)

例如:
scala> do{
| i=i+1
| println(i)
| }while(i<5)

集合

  • Scala集合分为可变集合和不可变集合。可变集合可以对其中的元素进行修改、添加、移除;而不可变集合,永远不会改变,但是仍然可以模拟添加、移除或更新操作。这些操作都会返回一个新的集合,原集合的内容不发生改变。

类和对象

  • 1、类的定义
    对象是类的具体实例,类是抽象的,不占用内存,而对象是具体的,占用存储空间。Scala中一个最简单的类定义是使用关键字class,类名必须大写。类中的方法用关键字def定义,代码:
    class User{
    private var age=20
    def count(){
    age+=1
    }
    }
    如果一个类不写访问修饰符,则默认访问级别为Public。这与Java是不一样的。关键字new用于创建类的实例。例如,调用上述代码中的count()方法:
    new User().count()

  • 2、单例对象
    Scala中没有静态方法或静态字段,但是可以使用关键字object定义一个单例对象,单例对象中的方法相当于Java中的静态方法,可以直接使用“单例对象名.方法名”方式进行调用。单例对象除了没有构造器参数外,可以拥有类的所有特性。
    例如,定义一个单例对象Person,该对象中定义了一个方法showInfo():
    object Person{
    private var name=“zhangsan”
    private var age=20
    def showInfo():Unit={
    println(“姓名:”+name+“,年龄:”+age)
    }
    }
    可以在任何类或对象中使用代码Person.showInfo()对方法showInfo()进行调用。

  • 3、伴生对象
    当单例对象的名称与某个类的名称一样时,该对象被称为这个类的伴生对象。类被称为该对象的伴生类。类和它的伴生对象必须定义在同一个文件中,且两者可以互相访问其私有成员。例如以下代码:
    class Person() {
    private var name=“zhangsan”
    def showInfo(){
    println(“年龄:”+Person.age) //访问伴生对象的私有成员
    }
    }
    object Person{
    private var age=20
    def main(args: Array[String]): Unit = {
    var per=new Person()
    println(“姓名:”+per.name) //访问伴生类的私有成员
    per.showInfo()
    }
    }

  • 4、get和set方法
    Scala默认会根据类的属性的修饰符生成不同的get和set方法,生成原则:
    val修饰的属性,系统会自动生成一个私有常量属性和一个公有get方法。
    var修饰的属性,系统会自动生成一个私有变量和一对公有get/set方法。
    private var修饰的属性,系统会自动生成一对私有get/set方法,相当于类的私有属性,只能在类的内部和伴生对象中使用。
    private[this]修饰的属性,系统不会生成get/set方法,即只能在类的内部使用该属性。

在Scala中,get和set方法并非被命名为getName和setName,而是被命名为name和name_=,由于JVM不允许在方法名中出现=,因此=被翻译成KaTeX parse error: Expected group after '_' at position 109: …ublic void name_̲eq(String x$1) {
this.name = x$1;
}

  • 5、构造器
    Scala中的构造器分为主构造器和辅助构造器。
    主构造器的参数直接放在类名之后,且将被编译为类的成员变量,其值由初始化类时进行传入:
    //定义主构造器,年龄age默认为18
    class Person(val name:String,var age:Int=18) {

}
object Person{
def main(args: Array[String]): Unit = {
//调用构造器并设置name和age字段
var per=new Person(“zhangsan”,20)
println(per.age)
println(per.name)
per.name=“lisi”//错误,val修饰的变量不可修改
}
}
将参数age设置为私有的,参数name设置为不可修改(val):
class Person(val name:String, private var age:Int) {
}

特质

  • 在类实例化的时候,可以通过with关键字混入多个特质,从而使用特质中的方法。例如,定义两个特质Runable、Flyable和一个类Bird:
    //定义两个特质
    trait Runable{
    def run=println(“会跑”)
    }
    trait Flyable{
    def fly=println(“会飞”)
    }
    //定义一个类
    class Bird{
    }
    在类Bird实例化时混入特质Runable和Flyable:
    val bird=new Bird() with Runable with Flyable
    bird.run //输出结果“会跑”
    bird.fly //输出结果“会飞”
  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文为AI自动生成,未进行人工编辑。 1. 第一天 今天是我在一家软件公司实习的第一天。在公司门口,我看到一个高大的胡子男子在等我。他是我的导师,名叫张老师。他带我参观了整个公司,介绍了公司的业务和发展历程。然后,他给我分配了一个任务,让我编写一个简单的Java程序。尽管任务很简单,我还是花了很长时间才完成它。我意识到我需要更多的实践经验和知识。 2. 第二天 今天,我继续学习Java编程语言,学习了Java基础知识,如变量、数据类型、运算符和控制语句等。我还学习了面向对象编程的基础知识,如类、对象、封装、继承和多态等。我在跟随张老师完成了一个小项目,这让我更深入地了解了Java的编程语言和应用。 3. 第三天 今天,我开始学习Java的高级编程概念。我了解了Java的异常处理机制,包括如何捕获和处理异常。我还学习了Java的集合框架,包括ArrayList、LinkedList、HashSet和HashMap等。我也学习了Java的线程编程,包括如何创建和管理线程,并使用同步和互斥机制保证线程安全。 4. 第四天 今天,我学习了Java的网络编程知识。我了解了如何使用Java Socket API建立客户端和服务器端网络连接,并进行数据传输。我还学习了Java的GUI编程,包括如何使用Swing和AWT库创建GUI应用程序。我通过完成一个小项目,将学到的知识应用到实际项目中。 5. 第五天 今天,我开始学习Java Web编程。我了解了如何使用Java Servlet和Java Server Pages(JSP)技术开发Web应用程序,并使用Tomcat服务器部署和运行它们。我还学习了Java的数据库编程,包括如何使用Java Database Connectivity(JDBC)API连接和操作数据库。我通过完成一个小项目,将学到的知识应用到实际项目中。 6. 第六天 今天,我继续学习Java Web编程。我了解了如何使用Java框架,如Spring和Hibernate,来简化Web应用程序的开发和管理。我还学习了如何使用Java的XML编程技术,包括如何使用DOM和SAX解析XML文档。我通过完成一个小项目,将学到的知识应用到实际项目中。 7. 第七天 今天,我开始学习Java的安全编程知识。我了解了Java的安全机制,包括如何使用数字证书和SSL协议来保护网络通信。我还学习了Java的加密和解密机制,包括如何使用对称加密和非对称加密技术来保护数据安全。我通过完成一个小项目,将学到的知识应用到实际项目中。 8. 第八天 今天,我学习了如何使用Java的开发工具和集成开发环境(IDE)。我了解了Eclipse和IntelliJ IDEA等常用的Java IDE,并学习了如何使用它们来开发Java应用程序。我还学习了如何使用Maven和Gradle等自动化构建工具来管理Java项目的依赖和构建过程。我通过完成一个小项目,将学到的知识应用到实际项目中。 9. 第九天 今天,我开始学习Java的优化和调试技术。我了解了如何使用Java虚拟机(JVM)的监视工具来诊断和解决Java应用程序的性能问题。我还学习了如何使用Java的调试工具来定位和修复Java应用程序中的错误。我通过完成一个小项目,将学到的知识应用到实际项目中。 10. 第十天 今天是我实习的最后一天。我感谢我的导师张老师,在他的帮助下我学到了很多关于Java编程的知识和技能。我还感谢我的同事们,他们对我的帮助和支持让我更好地适应公司的工作环境。在这个月的实习中,我学到了很多关于Java编程的知识和技能,并将这些知识应用到实际项目中。我相信这个实习经历将成为我未来职业生涯的宝贵资产。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值