Java基础语法(二)

目录

  • Java基础语法(二)

    • 一、强类型语言
    • 二、数据类型分类
      • 1、基本数据类型
      • 2、引用数据类型
    • 三、基本类型转换
      • 自动类型转换
      • 强制类型转换
    • 四、表达式类型的自动提升

Java基础语法(二)

承接上篇,谈到不同变量装载着不同数据类型的数据,那么Java支持的数据类型有哪些呢,本篇做一点小小的探究。


一、强类型语言

Java就是一种强类型的语言,包含着以下含义:

  • 所有的变量必须在声明之后才能使用,不能用的不明不白或者用得很随意。
  • 指定类型的变量只能结束类型与之匹配的值,很好理解,种瓜得瓜,种豆得豆,这才正常。

二、数据类型分类

Java数据类型分为基本数据类型引用数据类型两大类。

1、基本数据类型

字符类型其实归于整数类型,是无符号整数类型。但鉴于他和其他兄弟姐妹有点不一样,所以把他单独拎出来,基本数据类型变分成了四类。

整数类型

1字节 = 8位

四种类型所占内存空间:
  • byte:在内存中占1个字节,也就是8位,表数范围:-2^7 ~2^7-1
  • short:在内存中占2个字节,也就是16位,表数范围:-2^{15} ~2^{15}-1
  • int: 在内存中占4个字节,也就是32位,表数范围:-2^{31} ~2^{31}-1
  • long: 在内存中占8个字节,也就是64位,表数范围:-2^{63}~2^{63}-1
注意事项:
  • 如果将一个比较小的整数(当然比byte和short要小)赋给byte和short变量,系统会自动把他们当作这两种类型处理。
  • 如果把上面那个小的整数赋给long变量,系统首先会把数值当作int处理,int类型之后自动转换成long类型。
  • 如果使用一个较大的整数值(反正比int大),系统则不会自动把他当作long处理,如果想的话,就在后面加上L或者l吧,推荐L。
整数的表示方式:
  • 二进制:以0b或者0B开头。
  • 八进制:以0开头。
  • 十进制:懂得都懂。
  • 十六进制:以0x或者0X开头。

    所有的数字在计算机底层都是以二进制的形式存在的,且以补码的形式保存所有的整数。

    • 正数的补码和原码完全相同。
    • 负数最高位符号位不变,其他去反,整体加1,就是补码。
  • 整数值默认是int类型,占32位,且最高位为符号位。最后加上L之后,转换成long类型,占64位。
  • 由于最高位符号位的存在,当强制转换时,可能会导致数据产生偏差。

字符类型

字符型的值要用单引号‘ ‘,一定是单引号!!!Java使用16位的Unicode字符集作为编码方式,所以支持任何语言。

定义方式 char varName;

字符型表现形式:
  • 直接通过单个字符表示。如A,0等。
  • 通过转义字符表示,如\t,\r,\n等。如果想输出特殊的字符,则需要加上\再次转义,例如"d:\\numert".
  • 通过Unicode值表示,如\uXXXX,XXXX代表一个16进制整数。

浮点类型

两种类型所占内存空间:
  • float:单精度浮点数,占4个字节,32位,第一位符号位,后8位为指数,后23位为尾数。
  • double:双精度浮点数,占8个字节,64位,第一位符号位,后11位指数,后52位尾数。
注意事项:
  • 默认类型为double类型,想用float类型处理,需要在后面i爱上f或者F。
  • 浮点数需要加上小数点,不然当成int处理就懵逼了。
  • 只有浮点数类型的数值才能用科学记数法:3.14e2表示3.14*10^2
关键的无穷:

Java为浮点数运算提供了三个特殊的浮点数值:正无穷大,负无穷大和非数。

  • 正无穷大:正数除以0得到->POSITIVE_INFINITY.
  • 负无穷大:负数除以0得到->NEGATIVE_INFINITY.
  • 非数:0.0处以0.0或者对负数开方得到->NaN
  • 注意:如果整数值除以0,会报错。

如果数值中位数过多,不论整数还是浮点数都可以通过下划线分割:0b0000_0000_0010_1111

布尔类型

  • 只有boolean类型,表示逻辑“真”或“假”。
  • Java中不能用0或者非0表示true或者false。
  • 其他的基本数据类型也不能转换成boolean类型。
  • boolean类型值和字符串进行连接时,会自动转换为字符串类型。

2、引用数据类型

包括类、接口和数组类型,以及特殊的null类型。

  • 之后将会提到。

三、基本类型转换

自动类型转换

  • 自动也就是系统支持的,将表数范围小的数值直接赋给表数较大的变量,就可以实现自动类型转换。
  • 其实很好理解,类似于数学里的集合,A比B大,C可以存在B里面,当然就可以存在A里面,而且空间还变大了呢,舒服。
  • 任何基本类型的值和字符串进行连接运算时,都会自动转换成字符串类型,虽然字符串为引用类型。
  • 下图为自动类型转换图:

强制类型转换

  • 相反,自动类型转换图按反方向转换的话,就需要强制转换,格式:(目标类型)值
  • 显然,和自动类型相比,强制类型转换是有风险的,可能会溢出,造成信息丢失。

四、表达式类型的自动提升

当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型会发生自动提升。

  • byte、short和char类型将自动提升为int类型。
  • 提升到最高等级操作数同样的类型。具体查看转换图,右边比左边高。
  • 易发生错误:
    //定义一个short型变量
    short value = 4;
    //右边数值2为int型,所以右边自动转换为int类型,而左边是short,不匹配,错误!
    value = value -2;
    int val = 3;
    //右边两个操作数都是int型,尽管不能除尽,但仍然得到int型数,输出int值7
    int value = 23/val;
    System.out.println("hello"+'a'+10);//输出字符串helloa10
    System.out.println('a'+10+"hello");//‘a'自动提升至int类型,得出107,之后与字符串拼接,自动转换为字符串类型,输出字符串107hello

原文地址:https://www.cnblogs.com/summerday152/p/11830161.html

时间: 2024-12-09 23:44:17

Java基础语法(二)的相关文章

Java基础语法(二)<运算符>

运算符: 下面的都是相关的练习: 1.键盘录入一个三位整数数,请分别获取该三位数上每一位的数值 import java.util.Scanner; public class Test02 { public static void main(String[] args) { System.out.println("请输入一个三位整数:"); int value = new Scanner(System.in).nextInt(); int geWei = value % 10; int

黑马程序员——Java基础语法(二)---流程控制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础.常见的流程控制主要有四类:判断结构.选择结构.循环结构.其他控制结构 一.判断结构 判断结构的标志是if语句,if语句主要有三种表现形式: 1.if(条件表达式) { 执行语句 } 注意: 1.如果if语句中只有一条语句,那么可以不写大括号.不过初学者一定要写括号,以免出错. 2.如果if语句没写大括号,if就只能控制

JavaSE入门学习6:Java基础语法之运算符和语句(上)

继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age的值设置为20.这时候就 须要一个"=",告诉程序须要进行赋值操作. Java 语言中经常使用的运算符可分为例如以下几种:算术运算符,赋值运算符,比較运算符,逻辑运算符,条件运符. (1)算术运算符 算术运算符主要用于进行主要的算术运算.如加法.减法.乘法.除法等. Java 中经常使用的

Java基础语法<二> 字符串String

1. 代码点与代码单元 Java字符串由char序列组成.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length()方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量 要想的到实际的长度,即代码点数量 int cpCount = str.codePointCount(0.str.length()) 调用str.charAt(n)将返回位置n的代码单元,n介于0-str.length()-1之间 要想得到第i个代码点 int ind

JavaSE入门学习7:Java基础语法之语句(下)

继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for. (5)Java循环语句之while 语法: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 运行

Java基础语法(二)——数据类型扩展与运算符详解

一.前言 ? 上文我们讲解了有关java编程基础语法的变量与关键字的知识点,本文将主要对java基础语法中的运算符进行讲解. ? 在讲解语法之前我们先来讲一下真正的开发环境. 二.Java集成开发环境 2.1eclipse的使用方法 ? 之前我们在体验java编程或者写小的demo的时候,都是命名一个.java的源文件,在dos界面中编译和运行,但是这样给人的感觉并不友好,为了解决这一问题,一些大佬便开发了与各种语言对应的集成开发环境,其中包含文本编辑处理,自动编译,简化运行,随时进行代码调试.

黑马程序员——Java基础语法(一) --- 关键字、标识符、注释、常量和变量、运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 本篇博文主要总结java的基础语法,主要的内容包括:关键字.标识符.注释.常量和变量.运算符几部分. 一.关键字 关键字是被Java语言赋予了特殊含义的单词.关键字中所有的字母都是小写. java中的关键字主要包括如下几部分: 1.用于定

Java基础语法(一)---关键字、常量、变量、运算符

Java基础语法(一)---关键字.常量.变量.运算符一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型: byte(1字节,最大值127) short(2字节,最大值为2^15-1) int(4字节,最大值为2^31-1) long(8字节,最大值为2^63-1) 浮点类型: float (单精度实数在内存中占32bit 有效数字为6~7位) double(双精度实数占内存单元为64bit 有效数字为15~1

JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中,用户可以通过指定数据类型和标识符来声明变量,其基本语法为: DataType identifier; 或 DataType identifier = value; 其中,DataType是变量类型,如int/string/char/double/boolean等:identifier是变量名称,即标识符:value就是声明变量的值. 注: a.标识符由数字0-9.大小写字母.下划线.美元符号.人民币符号以及所有