精华内容
下载资源
问答
  • 一、在JAVA中一共有八种基本数据类型,...其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~3276

    一、在JAVA中一共有八种基本数据类型,他们分别是
    byte、short、int、long、float、double、char、boolean

    整型
    其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样
    byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)
    short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)
    int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)
    long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

    可以看到byteshort的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。
    在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。

    浮点型
    floatdouble是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同
    float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节
    double 1.797693e+308~ 4.9000000e-324 占用8个字节
    double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。
    浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。

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

    char型(文本型)
    用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容
    字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加’ ‘,比如 ‘1’表示字符’1’而不是数值1,
    char c = ’ 1 ‘;
    我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0);
    结果却变成了49。
    如果我们这样定义c看看
    char c = ’ \u0031 ‘;输出的结果仍然是1,这是因为字符’1’对应着unicode编码就是\u0031
    char c1 = ‘h’,c2 = ‘e’,c3=’l’,c4=’l’,c5 = ‘o’;
    System.out.print(c1);System.out.print(c2);System.out.print(c3);System.out.print(c4);Sytem.out.print(c5);

    二、String为什么不是基本数据类型
    java String 是个对象,是引用类型
    基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构
    基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为
    java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。

    三、char的取值范围为什么没有负数
    char的取值范围是0~65535
    一开始我也很奇怪为什么char取值没有负数,后面经过学习了解才知道:char表示一个字符,一个整体,Unicode编码中的组成部分——摘自百度。
    也就是说他的取值范围是在Unicode编码中规定的,而Unicode编码规定char的取值范围就是0~65535,没有负值。

    最后贴出百度解释和定义的Unicode编码:
    Unicode码:
    Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字”经”的编码是0x7ECF,注意字符码一般用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编码从0到127的字符与ASCII编码的字符一样,比如字母”a”的Unicode 编码是0x0061,十进制是97,而”a”的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万 多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字 也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用 4个字节来编码字符
    定义:
    Unicode码扩展自ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。Unicode最初打算作为ASCII的补充,可能的话,最终将代替它。考虑到ASCII是电脑中最具支配地位的标准,所以这的确是一个很高的目标。
    Unicode影响到了电脑工业的每个部分,但也许会对作业系统和程式设计语言的影响最大。从这方面来看,我们已经上路了。Windows NT从底层支持Unicode。
    目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。

    展开全文
  • 给定一个数组a,长度为N,元素取值范围为[1, N] 统计各个元素出现的次数,要求时间复杂度为O(N),空间复杂度为O(1) 可以改变原来的数组结构 解题思路 从第一个元素开始遍历,每遍历到一个元素,将(该元素-1记为...

    一道非常巧妙的算法

    问题描述

    • 给定一个数组a,长度为N,元素取值范围为[1, N]
    • 统计各个元素出现的次数,要求时间复杂度为O(N),空间复杂度为O(1)
    • 可以改变原来的数组结构

    解题思路

    1. 从第一个元素开始遍历,每遍历到一个元素,将(该元素值-1记为index)作为一个下标值,令该下标对应的元素为index+1出现的次数
    2. 若下标index为负值,说明元素的值已处理过(现在记录是次数),跳过
    3. 若index为非负值;判断,若a[index]为正,则交换数据,若a[index]非正,则执行减一,且自身的值设为0(表示已经用过了)
    4. 最后统计次数(次数是负数)

    代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int n = 6;
    	vector<int> a = { 6, 2, 4, 1, 2, 5 };
    	int i = 0;
    	while (i<n){
    		int temp = a[i] - 1;       
    		if (temp<0){      //判断该数据是否用过
    			i++;
    			continue;
    		}
    		if (a[temp] > 0){
    			a[i] = a[temp];
    			a[temp] = -1;
    		}
    		else
    		{
    			a[i] = 0;     //该数据已经使用过,且表示元素i+1出现0次
    			a[temp]--;
    		}
    	}
    	for (int j = 0; j < n; ++j){
    		cout << j + 1 << "出现次数" << -a[j]<< endl;
    	}
    	return 0;
    }
    
    展开全文
  • 一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字

    完整题目:一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字

    题目思路:

    在牛客网上看到的题目,其实在这种限定条件下用求和法也可以做,思路更简单。现在我用的这种是思路复杂一点的做法,牛客网做法没注释所以没看懂,自己实践的时候补充了以下思路。
    先从数组第一个数开始算,若元素下标值等于元素的值,则暂时没有重复,值与下标对应上了,可以看作给这个数排了序,访问的数组元素往后移一个
    若若元素下标值不等于元素的值,则有可能重复,这里还有再加一重判断。
    1.若元素下标值的值等于元素的值,则重复了,直接返回false
    2.若元素下标值的值不等于元素的值,交换两个值(这样子虽然当前元素还是不知道有没有重复,但是你可以把后一个数,即把元素下标值的值与其下标对应起来,相当于间接把后面的数给排序,对应了),访问的数组元素往后移一个
    基于题目规则,for遍历完还是没有跳出false,代表所有元素都刚好对应上下标了,不然在上面第2点小步骤里就应该跳出if判断,不交换两个值了,现在即没有重复,则直接返回ture。
    我的代码如下:

    #include <iostream>
    bool judge(int *arr,int &length){
        int i,temp;
        for(i=0;i<length;++i){
            while(arr[i]!=i){
                if(arr[i]!=arr[arr[i]]){
                    temp=arr[arr[i]];
                    arr[arr[i]]=arr[i];
                    arr[i]=temp;
                }
                else return false;
            }
        }
        return true;
    }
    int main(){
        int arr[]={1,2,5,3,4,7,8,9,6};
        int length=sizeof(arr)/sizeof(arr[0]);
        if(judge(arr,length)){
            std::cout<<"there is no repeat"<<std::endl;
        }
        else{
            std::cout<<"there has repeat"<<std::endl;
        }
        return 0;
    }
    

    代码不长,写出来也不难,就是想思路卡了我挺长时间的,数据结构学习还是有很长一段路要走。

    展开全文
  • 遍历数组,假设第 i 个位置的数字为 j ,则通过交换将 j 换到下标为 j 的位置上。直到所有数字都出现在自己对应的下标处,或发生了冲突。 时间复杂度为O(n),空间复杂度为O(1)。 转载于:...
    int if_dup(int arr[], int len)
    {
        int i = 0;
        for (; i < len; i++) {
            if (arr[arr[i]] == -1)
                return -1;
            arr[arr[i]] = -1;
        }
        return 0;
    }
    

      

    方法1.

    对数组进行排序(快速,堆),然后比较相邻的元素是否相同。
    时间复杂度为O(nlogn),空间复杂度为O(1)。

    方法2.
    使用bitmap方法。
    定义长度为N/8的char数组,每个bit表示对应数字是否出现过。遍历数组,使用 bitmap对数字是否出现进行统计。
    时间复杂度为O(n),空间复杂度为O(n)。

    方法3.
    遍历数组,假设第 i 个位置的数字为 j ,则通过交换将 j 换到下标为 j 的位置上。直到所有数字都出现在自己对应的下标处,或发生了冲突。
    时间复杂度为O(n),空间复杂度为O(1)。

    转载于:https://www.cnblogs.com/dartagnan/archive/2011/09/29/2195705.html

    展开全文
  •   在开始学习C语言的过程中,我们一定都做过这样一道题,交换两个数的。可能大部分人都会这道题,但今天我想试试用不同的方法做这道题。   1、创建临时变量 #include&lt;stdio.h&gt; int main() { ...
  • JSON概念以及语法和怎么从JSON中取值

    千次阅读 2019-08-03 23:09:24
    什么是JSON JavaScript 对象表示法(JavaScript Object ...JSON的取值范围 1.数字(整型或者浮点) 2.字符串(用单引号或者双引号括起来) 3.逻辑(true或者false) 4.数组(中括号) 5.对象(花括号)...
  • ECDH密钥交换

    千次阅读 2019-05-31 13:23:57
    前面一篇将过DH密钥交换算法,ECDH(Elliptic Curve Diffie-Hellman)顾名思义就是ECC+DH,安全性保证由...私钥是一个随机数ddd,取值范围在1,...,n−1{1,...,n-1}1,...,n−1,其中nnn是子群的阶 公钥是点H=dGH=...
  • html select控件的取值及事件

    千次阅读 2016-12-13 16:33:39
    html select控件取值及方法
  • 在一些公司的面试中可能会有些面试官会出一些奇奇怪怪的问题,比如怎么样计算1加到100的和要求不能使用加法,减法,循环和if判断,再比如怎么样不用第三个变量来交换两个变量的等问题。这里我们先分析下怎么样不用...
  • Python交换两个变量的4种方法

    千次阅读 2018-12-27 10:33:14
    在考试和面试时经常碰见交换两个变量的,下面我就罗列出Python 语言交换两个变量的的4种方法 方法1: ""常规方法,采用第三方变量"" x=2 y=3 z= x # z=2 x = y # x = 3 y=z # y =...
  • 很多在面试或者其它考试的时候会遇到这样一道题,不借助于第三个变量而交换两个变量的,开始的时候想想确实不知道应该怎样做,通常,我们借助于第三个变量的做法是: ? int x = 3, y =...
  • 用Java实现两个变量数值的交换

    千次阅读 2019-02-23 18:46:17
    1、通过第三方变量实现两个变量的交换 缺点:需要声明变量 2、通过两个变量之间的加、减实现 ...由于异或运算是不进位的,所以即使两个都无限接进int取值范围的数。通过异或运算,也不会超过int取值范围。 ...
  • 路由与交换

    千次阅读 2019-01-11 16:23:58
    路由与交换 学习笔记 路由与交换xmind导图 名词定义以及相关命令 章节 名词 定义/作用 优缺 相关 命令 记数字 1 CSMA/CD 避免冲突产生的机制 冲突       共享型...
  • 当OSPF引入外部路由时,缺省情况下引入的外部路由不...配置参数cost,可以指定引入的外部路由的缺省cost取值范围为0~16777214。 配置参数inherit-metric,可以使引入的外部路由的cost为路由自带的cost。 ...
  • Linux的内存回收和交换

    千次阅读 2019-07-18 08:01:02
    这个文件的默认值是60,可以的取值范围是0-100。 这很容易给大家一个暗示: 我是个百分比哦! 那么这个文件具体到底代表什么意思呢? 我们先来看一下说明: ======================================================...
  • 编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。最近有个比较火的文章,叫做《为什么你的前端工作经验不值钱?》 ...
  • 算法:如何高效产生m个n范围内的不重复随机数(m)
  • 交换基础知识

    千次阅读 2017-06-04 17:09:03
    依据二层(链路层)信息进行数据帧转发的称为二层交换,仅支持二层交换的交换机称为二层交换机; 依据三层(网络层)信息进行数据包转发的称为三层...二层交换机的出现,大大减小了冲突域的范围。 2、二层交换原理 二
  • 计算机网络——6.局域网交换技术

    千次阅读 2016-03-08 10:25:09
    本文主要对交换技术进行讲解,包括交换网络的基础,VLAN、干道、VTP、ISL、802.1q、STP技术和VLAN间的路由等。
  • 关系数据库——关系数据语言

    千次阅读 多人点赞 2019-10-22 19:52:51
    域:一组具有相同数据类型的的集合(即取值范围) 笛卡尔积:域上的一种集合运算。结果为一个集合,集合的每一个元素是一个元组,元组的每一个分量来自不同的域。 基数:一个域允许的不同取值个数。 ...
  • 遗传算法求解函数最大Java实现

    千次阅读 2017-08-15 13:30:32
    一,概述本文在理解遗传算法的基本原理的基础上,使用Java语言写了一个小程序来简单实现用遗传算法求解二次函数f(x,y)=x*x+y*y (x和y的取值范围为1到127的正整数)的最大。完整源码见已上传至我的github,详情请...
  • 遗传算法的简单实现 今天学习了遗传算法,其最大的特点就是能求取全局最优,但是算法随机性高,对连续定义域很难求得精确...%定义群体个数num(设为偶数),定义自变量数n,定义自变量取值范围[1,top], num=160;n=4;t
  • Linux使用swap交换空间

    千次阅读 2019-10-25 14:16:11
    这个文件的默认值是60,可以的取值范围是0-100。 这很容易给大家一个暗示:我是个百分比哦! 那么这个文件具体到底代表什么意思呢?我们先来看一下说明: ====== swappiness This control is used to define how ...
  • 金融信息交换协议

    千次阅读 2012-08-31 15:20:32
    在两方之间,一个连续的序号系列范围内的双向定单信息传送。每条信息都有独特的序号识别。在每次FIX交换过程开始时,就是序号的开始,首先从1开始,并依次增加直至贯穿整个交换过程。当在FIX交换过程中重新进行连接...
  • 路由内外部优先级?度量

    千次阅读 2018-06-28 15:28:05
     同目的地址,多条路由条目(可以是不同路由协议获取的路由条目)时,具有较高的优先级(较小)的路由协议发现的路由将成为最优路由。 ps:各路由协议(包括静态路由)都被赋予了一个优先级。不同品牌的设备默认...
  • 管壳式热交换器传热计算

    千次阅读 2018-09-06 10:06:11
    1 适用范围 本附录适用于管壳式热交换器的无相变传热计算 2 计算流程 a) 计算热负荷; b) 计算对数平均温差; c) 根据经验选取总传热系数,估算传热面积; d) 初选热交换器型式参数; e) 确定流体流径(管程...
  • 遗传算法_求最大

    千次阅读 2012-11-08 11:06:43
    /*********************************************************** ** 人工智能--遗传算法 ** ** 求解f (x) = x2 的最大,x∈ [0,31] ** ** author: CS0921 WTU **
  • 交换网络知识点整理

    千次阅读 2019-05-05 22:08:42
    在STP网络中,桥优先级是可以配置的,取值范围是 0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。 交换机启动后就自劢开始进行生成树收敛...
  • VLAN交换技术介绍

    千次阅读 2011-03-06 16:56:00
    取值范围为 1 ~ 4094 。 网络设备利用 VLAN ID 来识别报文所属的 VLAN ,根据报文是否携带 VLAN Tag 以及携带的 VLAN Tag ,来对报文进行处理。   VLAN 交换的概念 VLAN 交换是 VLAN 本地...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,988
精华内容 14,795
关键字:

交换值的取值范围