Mosh Java课程自学(一)

本文介绍了Java编程语言的基础概念,包括面向对象的特点、平台独立性、package和class的作用,以及基本类型(如byte、short、long、double)和引用类型(如Date、String、数组)的使用。还涵盖了类型转换、Math类方法、格式化和输入处理等内容。
摘要由CSDN通过智能技术生成

目录

一、前言

二、全局介绍

三、Types


一、前言

首先推荐一下B站上转载的Mosh讲Java课程,当然,建议有一定基础并且英文水平尚可的同学学习,否则你可能会被搞得很累并逐渐失去对编程的兴趣。

Mosh 【JAVA终极教程】中英文字幕 高清完整版 最简洁易懂的课程(3个PART齐全)更新完毕,注意看校对版!!!_哔哩哔哩_bilibili

二、全局介绍

很多人第一门语言接触的是C,相比于Java来说有明显的不同,毕竟C是面向过程的编程语言,而Java是面向对象的编程语言。两者之间意义上的不同,在我早期的一篇博客中进行了简单阐述,有兴趣可以看看:

从最简单直白的角度 浅谈面向过程与面向对象的区别_bit_Sakura的博客-CSDN博客

1、平台独立性(可移植性)

 众所周知Java的一大优点就是他在所有安装了Java运行环境的OS上都可以运行,不管是Linux、Mac还是windows,这也是在国内Java使用率远超C#的一个原因。

Java将编译的源代码放到虚拟机(Java Virtual Machine)上,经过处理交给对应平台完成移植。

2、package 

 说回Java,在Java中存在一个新的概念,package(包),什么是包,通俗来说就是文件夹。

像我们写的程序都以文件的形式保存,那在一个项目里,必然有很多很多的程序文件,要统筹管理这些大量文件就需要文件夹分开整理保存。

package一般的命名方式是以公司域名的倒序命名,例如:com.baidu...

 

在project 所属的文件夹中可以看到图中创建的package。

看到这种结构为什么需要package也就不言而喻了————自然是层次性可维护性。

3、class

同样是基础对象的编程,和C++一样,Java中自然也有class (类)的概念。

类是一个抽象的概念,它是一个宏观的概念,而对象是它的实例,也就是具象化,比如说水果和苹果,家具和桌椅之间的关系。这部分相比不用多说大家都知道。

在Java编程中与C/C++等语言不同的一点是(尤其对于刚接触的新手):执行程序的接口或者说进入程序运行的地方的形式不一样(只是形式上)。

C/C++是以main函数为起始执行的,当然Java也是,但是他们长得不一样,这就导致了刚接触Java的人会产生疑惑。

 这个public class Main 是什么鬼?嵌套在里面的那一串好像是main函数入口,但又好像不是。

先来看我们工程那一栏,

这里有个Main,首字母大写的,和第一行一样,这是我们创建的包的主类。

在这个主类中,public static void main(String[] args) 就是程序入口,public作为访问修饰符允许被所有类访问,static标明这是个静态方法(后面再说),参数String[] args 允许外部传参,能使编程更方便。

关于package和class话题实在太多,在后面的接触中会一一呈现。

三、Types

1、基本类型

Java中有两种类型,一种是基本类型:

byte、short 适用于表示范围不大的整数,比如一个人的年龄体重等。 

long表示的范围就大很多了,在Java中表示长整型数字时,要在数字后面加L,否则会报错:

 在Java中最好每3位使用一个下划线分割长整型数字,更清晰明了。

Java中有固定的常量不想使其被改变时我们可以用final修饰:

 

double 类型比float 类型存储范围更大,精度更高。

带小数点的字面量默认属于double类型,所以声明一个float类型的变量时,都要在数字后面加上 "F" 或 "f"。

2、引用类型

还有另一种类型是引用类型,用来表示除基本类型之外相对复杂的一些类型。

引用类型会在堆上申请开辟空间,借由new实现,并且Java环境会自动释放该空间。

现在我想创建一个日期类型,Java环境自动给我们提示了一串相关Date类型所在的包,“Enter" 将包导入:

 现在来创建Date类型,打印时间:

 使用 . 操作符可以显示该实例成员相关的函数操作,这是引用类型拥有而基本类型所不具备的。

 基本类型开辟的空间在栈上,而引用类型开辟的空间在堆上,实际上是将对象的地址赋值过去了,这也是很大的一个差异。

 

3、字符串

字符串也是引用类型,早期的创建方式:

当然你现在可以这么做:

 与C/C++不同,Java中字符串可以相加,也就是通过 + 的方式拼接:

 String类中有很多有趣的方法,如 .replace:

 将 “hello”中的 ' l ' 换成 'Q'。

如 .trim:

.trim会裁掉字符串前后多余的留白。

 已经存储在内存的字符串是无法改变的,比如用.toUpperCase /.toLowerCase取得字符串的大/小写子串,改变的不是原始字符串,而是返回了一个新的串。

原始字符串并未改变,也不能改变。

 4、数组

数组的创建方式(老版):

常用的:

现在想打印数组看一下,但是这样打印出来的是数组的首地址,

所以得借助Arrays:

二维数组也是一样:

这样出来的就是一个两行三列的数组。

但是打印不能用上面的Arrays.toString(),这样依然打印的是首地址,要用deepToString():

 多维数组都是一样的规则。

 5、显示类型转换、隐式类型转换

我们知道,float变量和int变量无法相加,那么byte 和 int ,short 和 byte , short 和long 之间又如何呢?

short 类型和int类型相加,居然转换成了long类型,结果没有问题,这是怎么回事?

 这涉及到变量之间的隐式类型转换,表示范围小的会自动朝表示范围大的转换(当然浮点数和整形之间不可以)

byte < short < int <long ---> float ---->double 

float < double

上图中变量x 先隐式类型转换成int , 编译器会生成一个匿名变量X,临时存放x转换成更高类型的值,和y相加,由于 = 左边是long类型,那么相加的值又会再次自动转变成更高的long类型。

float 和double之间也是大同小异。

那么浮点数和整形之间可以转换吗?————也是可以的,

当然也可以用显示类型转换。

单个字符char 类型也可以:

字符串与整形/ 浮点型之间也可以转换 :

 

 总结一下:

 

6、Math类相关方法

Math.round()接收一个float,返回一个 int类型

                          接收一个double,返回一个 long类型

按四舍五入处理。

Math.ceil ,向上提升,不舍只进。接收一个double,返回一个double类型

Math.floor,向下取整,只舍不进。接收一个double,返回一个double类型

Math.random 返回一个0~1之间的double型浮点数。

7、Format格式化

碰到金钱处理 ¥$,经常需要格式化输出;还有百分制格式化。

8、输入Scanner

 图中byte类型的变量隐式类型转换成了String类型。

 要想接收从键盘读入的数据,需要用到scanner.nextByte(),scanner.nextFloat()等方法。 

如果读的是字符串,需要scanner.next() / scanner.nextline(),两者区别在于前者只能读到空格处,后面的部分读不到;而nextline可以读到包括空格的所有字符。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值