[javaSE] 类型转换(1加1等于几)

打印 ‘a’+1,输出98,解释:’a’是char类型占2个8bit,1是int类型占4个,’a’字符会被自动强制转换为int类型对应ascii码表97

打印’1’+1,输出 50,解释:’1’是char类型,会被自动类型提升为int类型,对应ascii表49

定义byte b=3

b=b+2

此时会编译报错,可能损失精度,byte b在内存中默认是占一个8bit,int 2在内存中默认是占4个8bit,不同类型不能计算,必须自动类型提升转换,小的往大的提升,byte b会往int类型提升,此时可以计算,计算结果是4个8bit,结果从新赋值给byte b的时候,会损失精度

强制类型转换

上面的代码修改成 b=(byte)(b+2),此时就不会报错了,int类型强制转换为byte

public class VariableDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(‘a‘ + 1);// 输出 98
        System.out.println(‘1‘ + 1);// 输出 50
    }

}

PHP版:

PHP中是弱类型语言,打印 ‘1’+1会输出 2,String类型’1’被自动转成了int类型

强转只有这些 (int)  (bool)  (float)  (string)  (array) (object)

<?php
class VariableDemo{
    public static function main(){
        var_dump(‘a‘+1);//输出 int(1)
        var_dump((int)‘1‘);//输出 int(1)
        var_dump((bool)‘1‘);//输出 bool(true)
        var_dump((array)‘1‘);//输出 array(1) { [0]=> string(1) "1" }
        var_dump((object)‘1‘);//输出 object(stdClass)#1 (1) { ["scalar"]=> string(1) "1" }

    }
}

VariableDemo::main();
时间: 2024-10-11 09:59:42

[javaSE] 类型转换(1加1等于几)的相关文章

在已排序好的数组找两个数a加b等于给定的N

public class 在已排序好的数组找两个数a加b等于给定的N { public static void main(String[] args) { /** * 初始化参数 Result为结果值 * num 是测试数组 * start 开始游标, end 结束游标 */ int Result = 15; int[] num = {1,2,4,7,11,15}; int start = 0, end = num.length-1; //从数组的两端开始扫,若两数之和小于目标,则头往后进一位,

[javaSE] 反射-动态加载类

Class.forName(“类的全称”) ①不仅表示了类的类类型,还代表了动态加载类 ②请大家区分编译,运行 ③编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 Ⅰ所有的new对象都是静态加载类 在编译的时刻就要去检测该类是否存在,如果不存在,编译失败. //对于这种情况,静态加载不适用,因为我们需要根据输入来确定加载哪个类 package com.tsh.reflect; class ReflectLoadDemo { public static void main(String[]

Java千问:Java语言中最大的整数再加1等于多少?

已知Java语言中int类型所能表示的最大整数为2147483647,请问以下代码执行结果是什么?一部分人都会认为这段程序压根就无法通过编译,也有人认为,这段程序能够通过编译,但在运行时会抛出异常,但更多的人面对这道题目根本就无从下手.那么正确答案是什么呢?首先告诉大家,这段程序能够顺利通过编译,并且在运行时也不会出现异常,运行的结果是在控制台上输出了数字-2147483648!而-2147483648正好是Java语言中int类型所能表示的最小整数.这个运行结果可能会让很多人感到大跌眼镜,运行

给出一个数组和一个目标值,如果数组中任意两个数字的加和等于目标值,输出这两个位置

一般的做法(我自己也这样做了哈哈) public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[j] == target - nums[i]) { return new int[] { i, j }; } } } throw new IllegalArgumentExceptio

一加生不逢时面临两难选择 重走魅族老路or卷入小米漩涡

这两天,小米与华为吵了不可开交,魅族也坚定的插一脚力挺华为怒踹小米,手机行业上演罗生门,这是一场有关未来市场发展走向的公关战,荣耀对小米的紧贴策略已经让小米倍感竞争压力,而魅族的1799价格战又将小米拖入被动应战的局面. 不过,我要说的不是小米,不是魅族,也不是华为荣耀,而是一家闪耀但不耀眼的明星创业者所建立的"不将就"品牌[一加].一加算是互联网模式鼓吹下而产生的互联网手机品牌,其创始人刘作虎的OPPO蓝光背景让一加上线之初就颇受关注,而刘作虎也没让业界失望,媒体对其首款产品称赞声不

JavaScript3基础——运算符和类型转换

JavaScript3基础--运算符和类型转换    JavaScript运算符    JavaScript运算符也称操作符.其作用是对目标数据进行运算操作. 基本数学运算符    + - * / %  分别为加,减,乘,除,求模(求余数)    加减乘除不再赘述,此处解释一下求模    eg: var a = 10%20  //10    eg: var a = 15%4   //3    求模运算较为常见的地方在于处理时间.    如下 199秒换算为几分几秒.    199/60 为分钟数

LeetCode 39 Combination Sum(满足求和等于target的所有组合)

题目链接: https://leetcode.com/problems/combination-sum/?tab=Description Problem: 给定数组并且给定一个target,求出所有满足求和等于target的数字组合 遍历所有的数组中元素,然后对target进行更新,将该元素添加到tempList中,直到remain等于0时达到条件,可以将该tempList添加到list中 注意:每个元素可以使用多次,因此每次的遍历都要从上次的那个下标开始. 当target更新到小于0的时候,返

C语言系列之强制类型转换(一)

例子: #include <stdio.h> { char cChar;   //字符型变量 short int iShort; //短整型变量 int ilnt;           //整形变量 float fFloat=70000;      //单精度浮点型 cChar=(char)fFloat;     //强制转换赋值 iShort=(short)fFloat;    // ilnt=(int)fFloat;           // printf("the char i

补码(为什么按位取反再加一):告诉你一个其实很简单的问题

首先,阅读这篇文章的你,肯定是一个在网上已经纠结了很久的读者,因为你查阅了所有你能查到的资料,然后他们都会很耐心的告诉你,补码:就是按位取反,然后加一.准确无误,毫无破绽.但是,你搜遍了所有俯拾即是而且准确无误的答案,却仍然选择来看这篇毫不起眼的文章,原因只有一个,只因为你还没有得到你想要的东西. 因为你想要的,不是1+1=2,而是,1+1为什么等于2.当然,我们不讨论1+1的问题.我们讨论的,是补码. 你已经困惑了很久,你明明知道补码就是按位取反,然后加一,但是你想知道的,不是它怎么求滴,而是