【java特性、数据类型与运算符】

一. Java

1.Java是什么?

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

2.Java的特性

  • 简单性:Java语法是C++语法的一个“纯净版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重 载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。
  • 分布式(微服务):Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的 对象,其便捷程度就好像访问本地文件一样。
  • 面向对象:什么是面向对象? 这里我们用木匠打一个比方,一个“面向对象”的木匠始终关注的是所制作的椅子,第二位才是所 使用的工具;而一个“非面向对象的”木匠首先考虑的是所使用的工具。
  • 健壮性:Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。Java编译器能够检测许多 在其他语言中仅在运行时才能够检测出来的问题。
  • 安全性:Java适用于网络/分布式环境。使用Java可以构建防病毒、防 篡改的系统
  • 体系结构中立:编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代 码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精 心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。
  • 可移植性:与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例 如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定 的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。
  • 解释性:Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程。所以开发 过程也变得更加快捷,更加具有探索性。
  • 高性能:尽管对解释后的字节码性能已经比较满意,但在有些场合下可能需要更加高效的性能。字节码可以(在运行时刻) 动态的翻译成对应运行这个应用的特定cpu的机器码。
  • 多线程:Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发 程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。
  • 动态性:Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客 户端没有任何影响。在Java中找出运行时类型信息十分简单(反射的特性,后续会学到)

3.Java的main方法

public class Test{
public static void main(String[] args){
System.out.println("Hello,Java");
System.out.println("My name is:"+args[0]);
}
}

java程序的结构由以下三个部分组成:

1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个 类。类的内容必须包含在花括号里面。 

2.类:类中带有一个或多个方法。方法必须在类的内部声明。

3.方法:在方法的花括号中编写方法应该执行的语句。

总结一下:类存在于源文件里面;方法存在于类中;语句存在于方法中。

运行Java程序:

Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节 码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够 理解的形式来运行。

Java程序运行需要经过编译、运行两个阶段。

  • 编译:javac命令
  • 运行:java命令
  • JVM(Java Virtual Machine)Java虚拟机,通过JVM,Java实现了平台无关性,Java语言在不同平台运行时不需要重新编译,只需要在该平台上部署JVM就可以了。因而能实现一次编译多处运行。(就像是你的虚拟机也可以在任何安了VMWare的系统上运行)
  • JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程 序运行的所需环境。
  • JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译 器javac与自带的调试工具Jconsole、jstack等。

二.变量和类型

变量:指程序运行时可变的量,相当于开辟一块内存空间保存一些数据。

类型:则是对变量的种类进行划分,不同类型具有不同的特性。

1.整型变量

基本语法格式: int 变量名 = 初始值;

例:int a = 10;

在Java中一个int变量占4个字节,和操作系统没有直接关系(8个二进制位bit为一个字节Byte

取值范围为 -2^31 ~ 2^31 -1,大概为-21亿到+21亿

2.长整型变量

因为int变量的取值范围在大数据时代来说很容易超出范围,针对这种情况我们需要使用更大范围的数据类型来表示,在java中提供了long类型。

基本语法格式:long 变量名 = 初始值;

例:long a = 10L;(初始值可以写作10L,也可以写成10l,表示是一个长整型的数字)

在Java中一个long类型变量占8个字节,表示范围 -2^63 ~ 2^63 -1,数据范围远超int型,足够大部分工程使用。

初始值也可以直接写成10,但为了与int型的10区分,建议加上L或l。

3.双精度浮点型变量

因为在java中,整型除以整型的值仍为整型,会舍弃小数部分,所以引入小数类型。

基本语法: double 变量名 = 初始值;

例:double a = 1.0;

在Java中double类型占8个字节,但浮点数的内存布局和整型差别很大不能单纯使用2^n的形式来表示数据范围。Java的double类型的内存布局遵循IEEE 754标准(和C语言一样),尝试使用有限的内存空间表示无限的小数,会存在一定的精度误差。

4.单精度浮点类型变量

只占4个字节,跟double类型类似,但数据精度范围较小,一般在工程上用浮点数都优先考虑double,不太推荐使用float。

基本语法 float 变量名 = 初始值;

例:float a = 1.0f (也可写成F)

5.字符类型变量

基本格式: char 变量名 = 初始值;

例:char ch = 'A';

计算机中字符本质是一个整数,在C语言中使用ASCII表示,Java中使用Unicode表示字符。一个字符占用2个字节,表示的字符种类很多,包括中文。

在执行javac的时候可能会出现错误,此时我们在执行javac时加上-encoding UTF-8选项即可。

6.字节类型变量

字节类型也表示整型但是只占1个字节,表示范围较小(-128 ~ +127)

字节类型和字符类互不相干

基本格式:byte  变量名 = 初始值;

例:byte a = 0;

7.端整型变量

 基本语法: short 变量名 = 初始值;

short占用2个字节,表示范围-32768 ~ +32767

8.布尔类型变量

布尔类型变量只有两种取值,true表示真,false表示假,java中的布尔类型变量不能和int变量相互转换,不存在C语言中1表示真,0表示假。

基本格式:boolean 变量名 = 初始值;

boolean类型有些JVM的实现占用1个字节,有些占1个比特位,没有明确规定。

9.字符串类型变量

把字符放到一起就变成了字符串

基本语法:string 变量名 = 初始值;

例:String name = "zhangsan";

和上面类型不同,String不是基本类型,而是引用类型

在字符串中的一些特定的不太方便直接表示的字符需要转义:

“ \n ”——>换行,“ \t ”——>水平制表符,“ \' ”——>单引号,“ \" ”——>双引号,“ \\ ”——>反斜杠

  字符串的+操作,表示字符串的拼接

例:String a = "hello";

       String b = "world";

       System.out.println(a+b);

//执行结果

helloworld

10.变量的作用域

也就是该变量能生效的范围,一般是变量定义所在的代码块(大括号)

11.变量命名规则

硬性指标:(1)一个变量名只能包含数字,字母,下划线;(2)数字不能开头;(3)变量名是大小写敏感的,算两个变量

注意:虽然语法允许使用中文/$命名,但强烈不推荐

软指标:使用小驼峰命名法,当一个变量名由多个单词构成时,除第一个但此外,其余单词首字母都大写。

12.常量

常量:指的是运行时的类型不能发生改变。

主要有一下两种体现形式:

(1)字面值常量

10     //int 十进制

010  // 八进制,0开头

0x10 //十六进制,0x开头

10L  //long字面值常量

1.0 //double字面值常量

1.5e2 //double字面值常量

1.0f  //float字面值常量

true //bollean字面值常量

'a'  //char字面值常量

"abc"   //String字面值常量

(2)final关键字修饰的常量

final int a = 10;

a = 20;

//编译出错,提示 无法为最终变量a分配值

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

被final修饰的变量除了数据值不能改变数据类型也不能提升,

final byte a = 10;

存储时仍是byte型,

final byte a = 10;

final byte b = 20;

byte c = a+b;

//执行

30

二.运算符

1.算数运算符( + - * / %)

注意:a.相同数据类型进行数学运算,得到的值仍是本类型;小类型和大类型进行数学运算,先把小类型提升为大类型再进行运算。

b.0不能作为除数

c. %是取余运算或取模运算,不仅适用于整型,也适用于浮点型

2.增量赋值运算符( += -= *= /= %= )

例 a += 1(a= a+1)

3.自增自减运算符 (++  --)

a++ :先用后加;

++a:先加后用。

4.关系运算符

== 表示相等,<小于,>大于, != 表示不等,  <=小于等于,>=大于等于

5.逻辑运算符

&&:逻辑与,全真为真,有假则假

||:逻辑或,全假为假,有真则真

!:逻辑非,真变假,假变真

注意:&&和||遵循短路求值规则

对于&&,左侧表达式为false,则表达式整体的值一定是false,不需要计算右侧的表达式

||,左侧表达式为true,则表达式整体的值一定是true,不需要计算右侧表达式

&和|如果操作数是boolean时,也表示逻辑运算,但不支持短路求值

6.位运算符

&按位与,如果二进制位都为1,返回1,否则返回0

| 按位或,如果二进制位相同返回0,不同返回1

~ 按位取反:二进制0变1 ,1变0

7.位移运算符

<<向左移,左侧不要了,右侧补0   

>>向右移,右侧不要了,左侧补0 

>>>无符号右移:最右侧位不要了,最左侧补0。

8.条件运算符

表达式1?表达式2:表达式3

当表达式1为真时,整体值为表达式2,否则为表达式3

java中唯一的一个三目运算符。是条件判断的语句简化写法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值