文档章节

java基础---->数据类型、运算符、程序控制

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 2856
阅读 0
收藏 0
点赞 0
评论 0

一、java基础数据类型

基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。对于数值类型的基本类型的取值范围都已经以常量的形式定义在对应的包装类中了。

byte  :  1字节有符号整数的补码
short :  2字节有符号整数的补码
int   :  4字节有符号整数的补码
long  :  8字节有符号整数的补码 

float :  4字节单精度浮点数
double:  8字节双精度浮点数
char  :  2字节无符号Unicode字符

2 简单数据类型之间的转换

这些类型由低级到高级分别为 (byte,short,char)--int--long--float--double简单数据类型之间的转换又可以分为:

  • 低级变量可以直接转换为高级变量,
  •   高级变量转换为低级变量时,使用强制类型转换。

数值型

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // byte  
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
        System.out.println("包装类:java.lang.Byte");  
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
        System.out.println();  
  
        // short  
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
        System.out.println("包装类:java.lang.Short");  
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
        System.out.println();  
  
        // int  
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
        System.out.println("包装类:java.lang.Integer");  
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
        System.out.println();  
  
        // long  
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
        System.out.println("包装类:java.lang.Long");  
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
        System.out.println();  
  
        // float  
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
        System.out.println("包装类:java.lang.Float");  
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
        System.out.println();  
  
        // double  
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
        System.out.println("包装类:java.lang.Double");  
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
        System.out.println();  
  
        // char  
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
        System.out.println("包装类:java.lang.Character");  
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
        System.out.println("最小值:Character.MIN_VALUE="  
                + (int) Character.MIN_VALUE);  
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
        System.out.println("最大值:Character.MAX_VALUE="  
                + (int) Character.MAX_VALUE);  
    }  
}

结果如下:

基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的“E+数字”表示E之前的数字要乘以10的多少倍。Java中的e代表10的幂次。而Math.E代表自然对数2.718281828459045

System.out.println("自然对数:"+Math.E);          //自然对数:2.718281828459045
 System.out.println("表达式中e代表10幂次 "+ 1.2e+2);//表达式中e代表10幂次 120.0

给单精度的变量赋以带小数的初值时必须在数值后面加F或f

给长整形变量赋以超出int类型数值范围(-2147483648~2147483647)以外的数时,必须在之后加大写或者小写的L。

boolean型(布尔型)这个类型只有两个值,true和false(真和非真)

char型(文本型)用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容,字符的存储范围在/u0000~/uFFFF,在定义字符型的数据时候要注意加单引号。

char a1='a';
char a2 = '\u0061';
System.out.println(a1);  //a
System.out.println(a2);  //a
System.out.println('a'+0);//97

基本类型存储在栈中,对应的包装类的实例对象存储于堆中,因此基本类型的存取速度要快于存储在堆中的对应包装类的实例对象。

装箱:将一个基本数据类型变为包装类称为装箱操作,装箱的方法由各个子类完成

拆箱:将一个包装类变回基本数据类型,称为拆箱操作,转换的方法由Number类提供。

public class WrapperDemo {

        public static void main(String args[]){

                  int x1 = 10 ;        // 基本数据类型

                  Integer temp = new Integer(x1) ;    // 装箱

                  int x2 = temp.intValue() ;      // 拆箱

                  System.out.println(x2 * x2) ;

        }

};

从Java5.0(1.5)开始,JAVA虚拟机(Java Virtual Machine)可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类,也无法重写它们的任何方法。

二、标识符及关键字

标识符:由字母、数字、下划线、美元符号($)组成,区分大小写,其中不能以数字开头,不能是Java中的关键字。

关键字

访问控制

private

protected

public

,方法和变量修饰符

abstract

class

extends

final

implements

interface

native

new

static

strictfp

synchronized

transient

volatile

程序控制

break

continue

return

do

while

if

else

for

instanceof

switch

case

default

错误处理

try

Catch

throw

throws

包相关

import

package

基本类型

boolean

byte

char

double

float

int

long

short

null

true

false

变量引用

super

this

void

保留字

goto

const

gotoconstant没有任何意义

assert断言

native声明本地方法,native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法

volatilevolatile修饰变量。在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

strictfp, 即strict float point (精确浮点)。strictfp关键字可应用于类、接口或方法。使用 strictfp关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。

synchronized同步

transient如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。 Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。

 

三、注释

         // 注释一行
      /* ...... */ 注释若干行
       /**……*/文档注释,

 

四、类型转换

    提升:表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。

窄化转换:将容纳更多信息的数据类型转换成无法容纳那么多信息的类型,有可能面临信息丢失的危险。

扩展转换:新类型肯定能容纳原来类型的信息,不会造成任何信息的丢失

float或者double转型为整型值时,总是对该数字进行截尾,如果想得到舍入的结果,需要用Math.round()方法。

 

五、运算符

Java中提供了以下的运算符:

  • 赋值运算:=
  • 三目运算:布尔表达式 ?条件满足:条不满足
  • 数学运算符:+、-、*、/、%
  • 关系运算符:>、>=、<、<=、==、!=
  • 位运算:>>、<<、>>>、^、~
    1. >>  右移 将二进制向右移动指定位数,右移之后的位数用符号填充。
    2. << 左移 将二进制向左移动指定为数,左移之后的位数用0填充。
    3. >>> 无符号右移动,右移只有用0填充。
public class BitOperator {

	public static void main(String[] args) {

		int x=3;
		int y=-3;
		System.out.println("左移两位"+(x<<2)); //12
		System.out.println("右移两位"+(x>>2)); //0
		System.out.println("无符号右移两位"+(x>>>2));//0
		
		System.out.println("左移两位"+(y<<2)); //-12
		System.out.println("右移两位"+(y>>2)); //-1
		System.out.println("无符号右移两位"+(y>>>2)); //1073741823,因为整型是4个字节
		//x和~x的和为-1
		System.out.println("取反"+(~x));//-4
		System.out.println("取反"+(~y));//2
	}
}

逻辑运算:&&、||、!,其中&&、||满足短路规则

自增自减运算符:++、--

按位操作符:&(按位与),|(按位或),^(异或), ~(非 对补码按位取反,0变1,1变0. 若x=-3,则~x=2)

六、数组

声明和分配内存空间一步完成:声明数组时在栈内保存数组的名称,为数组开辟空间是使用new关键字在堆内完成的。

数据类型 数组名称[] = new 数据类型[长度] ;

数据类型 [] 数组名称 = new数据类型[长度] ;

两步完成:

数据类型 数组名称[] = null ;

数组名称 = new 数据类型[数组长度] ;

数组的冒泡排序

public class ArraySort{
	public static void main(String argbs[]){
		int data[] = {1,3,4,1,3,54,5,43,3,2,1,5,7,87} ;
		for(int x=0;x<data.length;x++){
			for(int y=0;y<data.length-1;y++){
				if(data[y] < data[y+1]){
					int temp = data[y] ;
					data[y] = data[y+1] ;
					data[y+1] = temp ;
				}
			}
		}
		for(int x=0;x<data.length;x++){
			System.out.print(data[x] + "、") ;
		}
	}
};

java.util.Arrays.sort(data);

System.arraycopy(src, srcPos, dest, destPos, length);

可变参数和数组

七、程序控制

if、if…else、switch(case分支条件后面只能是int,char(会自动转换成int) 或者枚举类型)语句,如果想使用string作为分支条件。switch 如果不加break;则执行第一个满足条件之后的所有操作。

public enum Animal {
dog,cat,pig;
static Animal getValue(String  animal)
{
	return valueOf(animal.toLowerCase());
}
}

Client.java

public class Client {
	public void caseAnimal(String animal) {
		switch (Animal.getValue(animal)) {
		case dog:
			System.out.println("this is a dog");
			break;
		case pig:
			System.out.println("this is a pig ");
			break;
		case cat:
			System.out.println("this is a cat");
			break;

		default:
			System.out.println("i don't know what is this!");
			break;
		}
	}

	public static void main(String[] args) {
		new Client().caseAnimal("dog");

	}
}

for、foreach、while、do…while语句

break:跳出循环,循环嵌套时跳出内层循环。

continue 作用:跳过循环体中剩余的语句而执行下一次循环

reteun:指定一个方法返回什么值,并导致当前方法退出,返回那个值。方法执行了return以后不再继续执行。返回类型为void的方法结尾处有一个隐含的return;

带标签的break和continue

public class LabeledWhile {
  public static void main(String[] args) {
    int i = 0;
    outer:
    while(true) {
      System.out.println("Outer while loop");
      while(true) {
        i++;
        System.out.println("i = " + i);
        if(i == 1) {
          System.out.println("continue");
          continue;
        }
        if(i == 3) {
          System.out.println("continue outer");
          continue outer;
        }
        if(i == 5) {
          System.out.println("break");
          break;
        }
        if(i == 7) {
          System.out.println("break outer");
          break outer;
        }
      }
    }
  }
} /* Output:
Outer while loop
i = 1
continue
i = 2
i = 3
continue outer
Outer while loop
i = 4
i = 5
break
Outer while loop
i = 6
i = 7
break outer
*///:~

99乘法表:

public class Multiply_table {

	public static void main(String[] args) {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= 9; j++) {
				if (i >= j)
					System.out.print(i + "*" + j + "=" + i * j + "\t");
			}
			System.out.println();
		}
	}

}

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/07/24/5637299.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
2018年java编程语言经典基础知识总结学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/21 ⋅ 0

Java 已老,Kotlin 或将取而代之!

点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言...

CSDN ⋅ 05/12 ⋅ 0

全面的java编程新手入门学习笔记总结

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/10 ⋅ 0

Java面试2018常考题目汇总及答案带走不谢!

一、JAVA基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等...

java高级架构牛人 ⋅ 06/14 ⋅ 0

你不知道 Java 10 的 5 件事

局部变量类型推断是有争议的热点,但Java 10在JVM中的垃圾收集和容器识别上带来了可喜的变化。 关于本系列 所以你认为你了解Java编程? 事实是,大多数开发人员只是浮于Java平台的表面上,仅...

ismdeep ⋅ 04/24 ⋅ 0

Java核心技术卷1 重读经典小记

Java基础 java中的int类型固定为32位 三个特殊的浮点值:正无穷大(),负无穷大()和NaN()。 在java中,char类型用UTF-16编码描述一个代码单元.不建议在程序中使用char类型. boolean类型的f...

java_龙 ⋅ 02/27 ⋅ 0

【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank ⋅ 前天 ⋅ 0

你所需要的java提升篇大总结

java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序的深入解析 java基础(五) Str...

sihailoveyan ⋅ 04/25 ⋅ 0

Java编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/23 ⋅ 0

从 Java 到 Kotlin,再从 Kotlin 回归 Java

由于此博客文章引起高度关注和争议,我们认为值得在Allegro上增加一些关于我们如何工作和做出决策的背景。Allegro拥有超过50个开发团队可以自由选择被我们PaaS所支持的技术。我们主要使用Jav...

oschina ⋅ 05/31 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部