Java入门(一)

Java入门(一)

  • Java概述
  • Java中重要的特性
  • Java的运行机制
  • 初识Java和main方法
    • 最简单的Java程序
    • mian方法的示例
    • Java中的数据类型

Java概述

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

Java中重要的特性

1.简单性
Java语法是C++语法的一个“纯净版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重
载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。
2.面向对象
什么是面向对象? 这里我们用木匠打一个比方,一个“面向对象”的木匠始终关注的是所制作的椅子,第二位才是所使用的工具;而一个“非面向对象的”木匠首先考虑的是所使用的工具。在Java的世界里,一切皆对象。
3.安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防
篡改的系统
4. 高性能
尽管对解释后的字节码性能已经比较满意,但在有些场合下可能需要更加高效的性能。字节码可以(在运行时刻)
动态的翻译成对应运行这个应用的特定cpu的机器码。
当然,Java的特性远不止于此,还有更多,我在这里就不一一赘述了。

Java的运行机制

如图所示
Java入门(一)_第1张图片

这里有一个重要的辨别问题,即区分JDK,JRE和JVM。
JDK是java的开发工具
JRE是java的运行环境
JVM是java的虚拟机
正是因为通过JVM,从而实现了java可以跨平台使用。
下面用一个框图来表示其三者的关系。
Java入门(一)_第2张图片
两个重要的JDK命令
javac 编译命令
java 运行命令

初识Java和main方法

最简单的Java程序

Java入门(一)_第3张图片

mian方法的示例

public class TextDemo {
     
    public static void main(String[] args) {
     
        int a = 10;
        System.out.println(a);
    }
}

如上所示,就是一个比较简单的Java程序。
通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:
1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个
类。类的内容必须包含在花括号里面。
2.类:类中带有一个或多个方法。方法必须在类的内部声明。
3.方法:在方法的花括号中编写方法应该执行的语句。

Java中的数据类型

  1. 变量和类型
    变量指的是程序运行时可变的量, 相当于开辟一块内存空间来保存一些数据。类型则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性。
    我们所讨论的 “变量” 主要和我们的 “内存” 这样的硬件设备密切相关的。下图位冯·诺依曼结构原理。
    Java入门(一)_第4张图片

1.1整型变量
注意事项:
1.int 表示变量的类型是一个整型。
2.变量名是变量的标识. 后续都是通过这个名字来使用变量。
3.Java 中 = 表示赋值(和数学不一样), 意思是给变量设置一个初始值。
4.初始化操作是可选的, 但是建议创建变量的时候都显式初始化。
5.最后不要忘记分号, 否则会编译失败。
6.// 表示注释。 注释作为代码的解释说明部分, 不参与编译运行。

public class TextDemo {
     
    /**
     *
     * @param args    java运行时命令行参数
     */
    public static void main(String[] args) {
     
        int a = 10;
        System.out.println(a);
        /*int b = 2147483648;//体现了java的安全性,溢出会编译报错*/
        int b = Integer.MAX_VALUE;
        System.out.println(b+1);//负数最小值//并未赋值,所以编译不报错。
        int c = Integer.MAX_VALUE+1;//警告//编译时,Integer.MAX_VALUE未知,所以+1时,编译无法发现。
        System.out.println(c);

Java入门(一)_第5张图片
1.2 长整型变量
long类型
长整型 占8个字节
注意事项:

  1. 基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long
  2. 初始化设定的值为 10L , 表示一个长整型的数字. 10l 也可以.
  3. 使用 10 初始化也可以, 10 的类型是 int, 10L 的类型是 long, 使用 10 L 或者 10 l 更好一些.
    Java入门(一)_第6张图片
    能表示最小的数为-263,能表示最大的数为263-1

1.3 双精度浮点型变量
double类型
双精度浮点类型 占8个字节 包装类为Double
浮点类型的存储方式与整型不同,不能单纯的用 2 ^ n 的形式表示数据范围。
在这里插入图片描述
任何小数,都不是一个精确的数字,而是一个范围。

1.4 单精度浮点型变量
float
单精度浮点类型 占4个字节
Java中默认浮点类型是double类型。定义时,应给数值后面加f即可修改bug。
在这里插入图片描述

1.5 字符类型变量
char
字符型类型 与C语言不同的是,它占2个字节,因此一个字符占用两个字节,表示的字符种类更多,包括中文。包装类为Character。如下图。

Java入门(一)_第7张图片
运行结果如下Java入门(一)_第8张图片

1.6 字节类型变量
byte
字节类型,只占1个字节。它能表示的范围为-128~127。包装类为Byte。
在这里插入图片描述
运行结果如下
在这里插入图片描述
1.7 短整型变量
short
短整型类型,它占2个字节。取值范围为-215 ~ 215-1,这个表示范围比较小,一般不推荐使用。当然,存在即合理,我们也会有用到它的地方。包装类为Short。
在这里插入图片描述
运行结果如下
在这里插入图片描述

1.8 布尔类型变量
与C语言不同的是,C语言中无布尔类型;而Java中存在布尔类型。
boolean
注意事项:

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假。
  2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。
  3. boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定。
    在这里插入图片描述
    运行结果如下
    在这里插入图片描述

1.9 字符串类型变量
String

  1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值。
  2. 和上面的类型不同, String 不是基本类型, 而是引用类型。
  3. 字符串中的一些特定的不太方便直接表示的字符需要进行转义。

在这里插入图片描述
运行结果如下
在这里插入图片描述
常见的转义字符如下
\n换行
\t水平制表符
'单引号
"双引号
\反斜杠
字符串的 + 操作, 表示字符串拼接,如下
Java入门(一)_第9张图片

Java入门(一)_第10张图片
还可以用字符串和整数进行拼接:
Java入门(一)_第11张图片
运行结果如下
Java入门(一)_第12张图片
正因为字符串的 + 操作, 表示字符串拼接,所以结果为result = 1020,而非30。

至此数据类型的总结基本完毕。
Java入门(一)_第13张图片
特殊的包装类
char的包装类为Character
int 的包装类为Integer
其他基本数据类的的包装类,均为其关键字的首字母大写。
1.10 变量的作用域
也就是该变量能生效的范围, 一般是变量定义所在的代码块(大括号)。
1.11 变量的命名规则
硬性指标:

  1. 一个变量名只能包含数字, 字母, 下划线
  2. 数字不能开头。
  3. 变量名是大小写敏感的。即num和Num是两个不同的变量。注意:虽然语法上也允许使用中文/美元符($)命名变量,但是强烈不推荐这样做。

软性指标:

  1. 变量命名要具有描述性, 见名知意。
  2. 变量名不宜使用拼音(但是不绝对)。
  3. 变量名的词性推荐使用名词。
  4. 变量命名推荐小驼峰命名法,当一个变量名由多个单词构成的时候,除了第一个单词之外,其他单词首字母都大写。

1.12 常量
上面讨论的都是各种规则的变量,每种类型的变量也对应着一种相同类型的常量。常量指的是运行时类型不能发生改变。常量主要有以下两种体现形式:

  1. 字面值常量
    10 // int 字面值常量(十进制)
    010 // int 字面值常量(八进制) 由数字 0 开头. 010 也就是十进制的 8
    0x10 // int 字面值常量(十六进制) 由0x 开头0x10也就是十进制的 16
    10L // long 字面值常量. 也可以写作 10l (小写的L)
    1.0 // double 字面值常量. 也可以写作 1.0d 或者 1.0D
    1.5e2 // double 字面值常量. 科学计数法表示. 相当于 1.5 * 10^2
    1.0f // float 字面值常量, 也可以写作 1.0F
    true // boolen 字面值常量, 同样的还有 false
    ‘a’ // char 字面值常量, 单引号中只能有一个字符
    “abc” // String 字面值常量, 双引号中可以有多个字符.
  2. final 关键字修饰的常量
    final int a = 10;
    a = 20; // 编译出错. 提示 无法为最终变量a分配值

常量不能在程序运行过程中发生修改

1.12 类型转换
Java 作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有教严格的校验。
1.int 和 long/double 相互转换
long 表示的范围更大,可以将 int 赋值给 long,但是不能将 long 赋值给 int。

double 表示的范围更大,可以将 int 赋值给 double,但是不能将 double 赋值给 int。
2.int 和 boolean 相互转换
int 和 boolean 是毫不相干的两种类型,不能相互赋值。

3.int 字面值常量 给 byte 赋值
byte 表示的数据范围是 -128~+127, 256 已经超过范围, 而 100 还在范围之内。
使用字面值常量赋值的时候,Java 会自动进行一些检查校验,判定赋值是否合理。

使用强制类型转换
强制类型转换不是一定能成功,互不相干的类型之间无法强转,例如,int类型与 boolean 类型无法实现强转。

  1. 不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型。
  2. 如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但是可能精度丢失。
  3. 将一个字面值常量进行赋值的时候,Java 会自动针对数字范围进行检查。

1.13 理解数值提升
int 和 long 混合运算
当 int 和 long 混合运算的时候,int 会提升成 long,得到的结果仍然是 long 类型,需要使用 long 类型的变量来接收结果。如果非要用 int 来接收结果,就需要使用强制类型转换。
byte 和 byte 的运算
byte 和 byte 都是相同类型, 但是出现编译报错.。原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int ,再进行计算,得到的结果也是 int,这是赋给byte类型的 c,就会出现上述错误。
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据。为了硬件上实现方便, 诸如 byte 和 short 这种低于4 个字节的类型,,会先提升成 int, 再参与计算。
小结:

  1. 不同类型的数据混合运算,范围小的会提升成范围大的.
  2. 对于 short,byte 这种比 4 个字节小的类型,会先提升成 4 个字节的 int ,再运算。

到这里Java入门(一)基本结束。非常感谢铁汁们的浏览与分享。我们下期见。

你可能感兴趣的:(java,编程语言,字符串)