【Java初探02】——Java语言基础
本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构。
Java语言基础的大致组成
- java主类结构
- 基本的数据类型
- 变量与常量
- 运算符
- 数据类型的转换
Java主类结构。
Java语言是面向对象的程序设计语言,Java程序的基本组成单元就是类。类体中又包括属性和方法两部分,每个Java程序都必须包含一个main()主方法,含有main()方法的类称为主类,只有主类中的main()主方法能够运行,其他类和其他方法只能在主方法中被调用,为主方法服务,如果一个类没有被主类,主方法用到,那么这个类在当前程序中就暂时是无用的。
Java主类的结构如下:
public class class_structure { // 主类
public static void main(String[] args) { // 主方法。
}
}
main()方法是类体中的主方法,由{}括号开始与结束,public,static,void分别是main()方法的权限修饰符,静态修饰符,返回值修饰符。Java程序中的main()方法必须声明为public static void 。 String[] args 是一个字符串类型的数组,它是main()方法的参数,卖main()方法是程序执行的开始位置。
- api类库
在Java语言中可以通过import关键字导入相关的类。在jdk的api(应用程序接口)中提供了130多个包。可以通过api文档查看这些类,其中主要包括了类的继承结构,类的应用,成员变量表,构造方法等。并对每个变量的使用目的做了详细的描述,api文档是开发人员不可或缺的工具。
基本数据类型
在Java中有八种基本的数据类型来存储数值,字符和布尔值。
- 整数类型
整数类型用来储存整数数值,既没有小数部分的数值。可以正负数。整型数据在Java程序中有三种表现形式,十进制,八进制,十六进制。
整数类型根据内存占用大小,分为byte,short,int,long 4种类型。他们具有不同的取值范围:
- 浮点类型
浮点类型表示有小数部分的数字,Java语言中浮点类型分为单精度浮点类型(flaot)和双精度浮点类型(double),他们具有不同的取值范围。
单精度与双精度的根本区别就是小数后精确位数的多少,以及内存的占用。高精度的double型比单精度的float型精度高,但占用内存大。所以float与double的选择是根据使用的实际需求来确定的。
在默认情况下,小数都被看做double型,若使用float型小数,则需要在小数后面添加F或f。在使用double型小数时也可以在后面加D或d来进行识别,不加也不会出错,但在使用float型小数时必须在后面加f或F。
- 字符类型
字符类型(char)用于储存单个字符,占用16位(字节)的内存。在定义字符型变量时,要以单引号表示,双引号表示字符串,"s",表示一个字符串,'s'表示一个字符。
- 转义字符
转义字符是一种特殊的字符变量,它以\开头,后跟字符。转义字符具有特殊的含义,不同于字符原有的意义:
转义字符赋值给变量时,与字符常量值一样需要使用单引号。
- 布尔类型
布尔类型又称为逻辑类型,通过关键字Boolean来定义布尔类型变量。只有true和false两个值。分别代表布尔逻辑中的真和假。布尔值是不能和整数类型进行转换的,布尔类型通常被用作在流程控制中的判断条件。
更新时间:
2019-3-30 2:00
变量与常量
在学习变量与常量的定义之前,我们首先应当了解一下标识符个关键字,这对我们在定义变量的过程中会有所帮助。
- 标识符和关键字
- 标识符
标识符可以简单的理解为一个名字,用来标识类名,变量名方法名,数组名,文件名的有效字符序列。
Java语言规定标识符由任意顺序的字母,下划线,美元符号和数字组成,并且第一个字符不能是数字。标识符不能是Java中的保留关键字
另外需要注意的是,在Java语言中标识符是严格区分大小写的,且Java语言使用的是unicode标准字符集,最多可以识别65535个字符。
- 关键字
关键字是Java语言中已经被赋予了特定意义的一些单词,不可以把这些关键字当作标识符来使用,Java关键字如下图:
- 变量的声明
变量的使用是程序设计中的一个十分重要的环节,定义变量,就是告诉编译器这个变量的数据类型,这样编译器才知道该分配多大的空间给它。以及它能够存储什么类型的数据。
在程序运行过程中,空间内的值是变化的,这个内存空间就被称为变量,而为了方便操作,给这个空间取个名字,即为变量名。变量的命名必须是合法的标识符,内存空间的值即为变量值,在声明变量时可以是剋有赋值,也可以赋初始值。
系统的内存大致可以分为三个区域,系统区(os),程序区(program),数据区(data)。当程序执行时,程序代码加载到内存中的程序区,数据暂时储存在数据区中。
声明变量后,程序执行时,会在数据区配置空间给这两个变量。
- 常量的声明
在程序运行过程中一直不会改变的量称常量,也称“final”变量。常量在整个程序中只能被赋值一次,在为所有的对象共享值时,常量时非常有用的。
在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定。
final:最后,最终。
final关键字是一个非访问修饰符,final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。
final 修饰符通常和 static 修饰符一起使用来创建类常量。
- 变量的有效范围
由于变量是被定义出来后暂存在内存中,所以等程序执行到某一点,该变量会被释放掉,也就是说变量是有生命周期的。因此,变量的有效范围是指程序代码访问该变量的区域。若超出该区域,则无法访问该变量。
在程序中,一般会根据变量的有效范围将变量分为成员变量和局部变量。
- 成员变量
在类体中所定义的变量被称为成员变量,成员变量在整个类体中都有效,类的成员变量又可分为两种,静态变量和实例变量。
静态变量,需要使用static修饰符。静态变量的有效范围是可以跨类的,甚至可以达到整个程序之内,静态变量除了可以在本类调用,还可以以类名.变量名在其他类调用。
- 局部变量
在类的方法体中定义的变量称为局部变量。局部变量只在当前代码块中有效。在类的方法中声明的变量,包括方法的参数都属于局部变量。局部变量只在当前定义的方法内有效,不能用于类的其他方法中。局部变量的生命周期取决于方法,当方法被调用的时候,JVM虚拟机就会分配内存空间。当方法结束,则释放方法中局部变量的占用的空间,局部变量也会被销毁。
运算符
运算符是一些特殊的符号,主要用于数学函数,一些类型的赋值语句和逻辑比较的方面。Java中提供了丰富的运算符,赋值运算符,算数运算符,比较运算符等。
- 赋值运算符
赋值运算符以=表示,他是一个二元运算符(对两个操作数处理),其功能是将右边的操作数的值赋给左边的操作数。
赋值运算符的运算规则是从右往左。
在Java中赋值运算符是可以连起来使用的。
- 算数运算符
Java中的算术运算符主要又+,-,*,/,%。他们都是二元运算符。
- 自增自减运算符
自增,自减运算符是单目运算符,可以放在操作数的前面,也可以放在操作数之后,操作元必须是一个整形或浮点型变量。自增自减的作用就是使变量自增1或自减1。
当自增自减运算符放在操作数前面时,表示,先使操作数加1在进行运算,放在后面则是先进行表达式的运算,再加减1
++a; //先加1
a++;//后加1
- 比较运算符
比较运算符属于二元运算符,用于出程序中的变量之间,变量和自变量之间以及其他类型的信息之间的比较。比较运算符的结构是boolean型。当结果成立,为true,否则为false。所有比较运算符通常作为判断依据使用在条件语句中。
- 逻辑运算符
返回类型为布尔值的表达式,如比较运算符,可以被组合在译器构成一个更加复杂的表达式。这是通过逻辑运算符来实现的。逻辑运算符包括&&(逻辑与),||(逻辑或),!(逻辑非),其中只有逻辑非是一元运算符。
逻辑运算符的用法和含义:
表达式1 | 表达式2 | 1&&2 | 1II 2 | !1 |
---|---|---|---|---|
true | true | true | true | false |
ture | false | false | true | false |
false | false | false | false | true |
false | true | false | true | true |
- 位运算符
位运算符除按位与和按位或外,其他只能用于处理整数的操作数。位运算是完全针对为方面的操作,整型数据在内存以二进制表示。
- 按位与
按位与运算符位&,是双目运算符,运算法则:如果两个整型数a,b,对应位都是1,则结果位才是1,否则为0。如果操作数精度不同,则结果的精度与精度高的相同。
- 按位或
按位或运算符为|,是双目运算符,按位或运算法则:如果两个整型数据a,b对应都是0
则结果为才为0,否则为1。结果精度与操作数精度高的相同。
- 按位取反
按位取反运算也称安位非运算,运算符为~,单目运算符,就是将操作数二进制的1改为0。
- 按位异或
按位异或运算表示^,为双目运算符,运算法则:当两个操作数的二进制表示不同时,结果为0,否则为1。精度取最高。
- 移位运算
除了上述运算符之外,还可以对数据按二进制进行移位操作。Java移位运算符有三种:<<左移,>>右移,>>>,无符号右移。
左移就是将运算符左边的二进制按照运算符右边的操作数指定的位数向左移动。右边移空的位置补0。右移则稍微复杂一些,当最高位为0时,右移空的位就填入0,如果最高位是1,右移空的位就填1。
而无符号右移,则是无论最高位是0还是1,左侧被移空的高位都填入0。
移位运算符可以实现整数的乘除以2的n次方的效果,如y<<2与y*4相同,y>>1,就是y/2,左移就是乘,右移就是除。
- 三元运算符
三元运算符的使用格式为:
条件式?值1:值2
boolean b=20<30?true:false;
三元运算符的规则是:若表达式的值为true,则整个表达式取值1,否则取值2。
三元运算符等价于if else语句。
- 运算符的优先级
Java表达式就是使用运算符连接起来的符合Java规则的式子,运算符中运算的先后顺序。通常优先级由高到低的顺序依次是:
增量与减量运算,算数运算,比较运算,逻辑运算,赋值运算。
如果两个式子有同样的优先级,则左边的表达式要比右边的表达式先被处理。
数据转换
类型的数据转换是将一个值从一种类型更改为另一种类型的过程,例如,可以将String类型“456”转换为一个数值型,而且可以将任意类型的数据转换为String型。
如果从低精度向高精度转换,则不会溢出,并且总是成功的,如果从高精度向低精度转换,则必然伴随着信息的缺失,有可能失败。
- 隐式类型转换
从低级类型向高级类型的转换,系统将自动进行,这种类型转换称为隐式类型转换。
基本类型精度高低:byte<short<int<long<float<double.
int x=34;
flaot y=x; // 这就是一种隐式类型转换,
- 显示类型转换
当高精度的变量的值赋给低精度的变量时,必须使用显示类型转换(即强制类型转换)。
int a=(int)34.13;
long y=(long)456.6f;
int b=(int)'d';
当执行显示类型转换时,可能会导致精度的丢失。只要时Boolean型以外的其他类型之间的转换,全部都能以显示类型转换方法得到。
Java语言基础 完。
更新时间:
2019-4-1
19:51
【Java初探02】——Java语言基础的更多相关文章
- 002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介
002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介 学习Java的基础语法 Java是一门编程语言,学习的逻辑其实和现实世界的语言是一样的,需要了 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包
090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包
089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
随机推荐
- Silverlight 预定义颜色速查表
预定义颜色 可以使用 SolidColorBrush 绘制,它使用预定义纯色.这可以是 Colors 的静态属性 (Property) 名称,也可以是指定为 XAML 属性 (Attribu ...
- Mysql逻辑分层、存储引擎
Mysql的逻辑分层: 连接层 服务层 引擎层 存储层 常见的数据库引擎有InnorDB和MylSAM. InnorDB:事物优先,(适合高并发操作:行锁,顾名思义一次锁一行数据) MylSAM:性能 ...
- Spring的两种代理JDK和CGLIB的区别浅谈
一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...
- SRM466
250pt: 给出一个数n(n <= 10^10),问至少修改几位能使其变成完全平方数. 思路: 直接枚举平方根,然后统计. 注意枚举时要枚举到比她大.. #line 7 &qu ...
- 8.正则表达式和XPath
1.使用正则表达式爬取内涵段子 import requests import re def loadPage(page): url = "http://www.neihan8.com/art ...
- 自定义Chrome缩放比例
我想要设置Chrome页面缩放为120%,但是Chrome只提供110% 125%,根本没有让我舒心的缩放比例. 强迫症发作,谷歌了半天没有一个很好的解决方案. 虽然也有不少第三方扩展可以自定义缩放比 ...
- c#中快速排序的学习
最近看了一句话,说的是在现实生活中,会写字的人不见得会写出好文章,学习编程语言就像是学会了写字,学会了编程语言并不一定能写出好程序. 我觉得就是很有道理,以前读书的时候,基本学完了C#中的语法知识,算 ...
- WPF 介绍一种在MVVM模式下弹出子窗体的方式
主要是通过一个WindowManager管理类,在window后台代码中通过WindowManager注册需要弹出的窗体类型,在ViewModel通过WindowManager的Show方法,显示出来 ...
- 使用xftp连接到ftp服务器即常见问题的解决
使用xftp连接到ftp服务器 新建连接 配置连接 点击确定,连接到ftp 常见问题 中文乱码问题 解决: 点击连接设置按钮 修改编码方式 最后确定保存!刷新一下,就不在乱码了;
- .net图表之ECharts随笔05-不同01的语法步骤
找了好久,一直没找到可用的热力图heatmap.js. 应该说,使用01中的语法一直都无法实现热力图.只能说我太菜了... 现在急于求成,我找了另一种语法来调用ECharts.此种语法的js文件集是从 ...