关于JDK中的运算符和变量
类名首字母必须大写。多个单词组成的类名,每个单词的首字母大写。
只要起名称就要让他有意义。Java中的关键字都是由小写字母组成的。
在项目中给标示符起名字在公司中大都有固定的规则。一般加上标示符和$符号。
大名称$小名称
Java中的文档注释
/**
文档注释
*/
文档注释和主要块注释的区别就是可以利用javadoc.exe进行提取,提取出来的主要是给程序员看,不是目标用户看。
注释中的嵌套
块注释中不能有块注释
例如
/*床前明月光
/*疑是地上霜*/
*/
(最后一个结尾注释符号就无法进行匹配)
用块注释扩大或者缩小范围可以进行程序的排错调试。
注释是不编译到字节码(class文件中去)。带注释的文件和不带注释的同一个文件编译之后的class文件的占用空间相同。
代码仅仅是思想的一种体现,敲的代码越多思想也成熟,两者相辅相成。
对于整数有四种表现形式:
二进制
八进制 0开头表示
十进制
十六进制 用0x开头表示
十六进制当大于十的时候再用两个阿拉伯数字10,11……因为是两位数字表示表示容易引起误解,就用一个字母表示。
因为十六进制是含有字母的所以用0x 开头。X表示是可有有字母表示的。
电报就是用发出的“滴滴”之间的间隔传递信息(相当于01)。电报不是每个滴滴之间是一样的。
关于进制的转换(主要用二进制和十六进制,八进制并不是太常用)
左边二进制,右边十进制
11=3
111 = 7;
1111= 15 ;
11111= 31;
-1010-1110
010-101-110
2 5 6 0256
-1010-1110
10 14 0xae
结论:
八进制数:其实就是二进制位 3个二进制位一个八进制(111=7,再多一个就进位了)
十六进制:其实就是二进制中的四个二进制位为一个十六进制
三十二进制用来表示的话会更短,但是需要用更多的字母去表示这个三十二进制数,所以现在用的十六进制就停止了。
Ipv4 是四段二进制的数表示的
Ipv6 是六段十六进制数表示的,ipv6足够地球上所有的设备用几十年,物联网——任何电器设备电冰箱等都分配一个固定的ip地址。
现在都是动态的ip地址的,你不上网了ip地址就释放了。
Ip地址固定有利于查找,控制设备等。。。

上图是我个人计算机在没有联网的情况下的ipconfig /all
这个是在没有联网的情况下的信息;
可以看到我现在的笔记本是没有IP地址的,今天(6月12日)刚刚看了下网络编程的课程内容。
IP地址相关的内容是网络层“网际层”。如果不联网的话是没有IP地址的。上图的内容也说明了这一点。
另外:本地主机计算机的默认的IP地址是127.0.0.1,别名叫做localhost。
本地有个DNS解析文件,具体位置在C:\Windows\System32\drivers\etc文件路径的 hosts 文件中有记录。localhost可以再修改成别的名字。
负数的二进制数
其实就是这个数的正数的二进制取反,加1.
比如-6
0000- 0110
取反1111- 1001
+0000-0001
--------------------------
1111-1010 -6
负数的二进制的最高位是1。
Long类型声明最后加上一个l。因为默认是int
Float类型声明最后加上一个f。因为默认是double
Char类型声明必须是单个字符“12”就是错误的
Char=‘1’
也可以是一个单独的汉字。一个汉字是两个字节和char类型一样。
2个字节,一个字节是8位
0000-0000 0000-0000 0000-0000 0000-0000
java是强类型数据语言 javascript就是弱类型语言。
运算两端是同类型才能运算。不同类型是不能运算的。
有特殊情况:就是强制类型转换(强转动作要慎用,很有可能丢失精度,舍去高位,留下低位)
Int和float进行运算,两个都是4个8位,float中有一个小数精位,运算之后会保留这个小数精位。不过实际中很少有这俩个类型的运算。
Char类型能够运算。Char chr= ‘a’ +1 a是两个字节,1是四个字节。
底层找到a对应的二进制码
Char(’a’+1) 强制类型转换
老美在设计计算机的时候把生活中的文字和二进制进行了一一对应。
就是ASCI表,仅仅限于老美的文字和符号。
类似的中国文字进行了编码编号GB2312(数量不够)一步步扩展,最终是GBK。
Char(‘你’+ 0) 底层“你”也是有对应的数字。
最后集合一个各个国家的码表弄成了Unicode码表,任何国家的码表都兼容ASCI码表。
byte b = 4
b = 3 +4;(或者b=7)
system.out.println(b)
这样子是不会报错的。正常打印出b=7.
byte b = 4;
btye b1=3;
btye b2=7;
b=b1+b2;
system.out.println(b);
这样子就是会报错的,提示可能丢失精度。
其背后的原理是这样的:
byte b=4,;4是int类型,编译器会对4进行检查,byte是1个字节,编译器会舍去前边三位。留下最后一位,因为b是没有超出byte类型的范围的(-128~127)。所以正常打印。
而第二种情况是b1和b2都是变量,他们的值会是变化的。b=b1+b2的是值是无法进行判断的检查的。第一种是因为等式后边是常量,编译器可以判断。
假如b2=127,b=b1+b2;这样b的值肯定无法正常给。
byte b=4
byte b1=3;
byte b2=7;
int x;
x=b1+b2;
system.out.println(x);
这种情况是没有问题的,b1和b2进行强转,都在int类型的范围之内。
int x;
int x1 = 10;
int x2 = 98;
x = x1+x2;
System.out.println(x);
这个情况是没有问题。
就是当x1或者x2特别大,超过了int类型的最大范围。
int x1 = Integer.MAX_VALUE;(代表int类型的最大值;
这样x = x1+x2,就会有精度的益出。高位的舍弃。出现运算错误。
以上就是int和byte类型的区别。int 是默认类型就没有byte类型的现象。
int x=6370;
x = x/1000 *1000;
java是强类型语言,x=6370,和1000都是整数,两个整数相除任然是整数。
javascript中这个运算就是实际的平常运算结果,js是弱类型的。
两者都是4个8位,不可能两个数一整除出现8个8位。内存挂了。在底层会舍去小数位,只留整数位。
%是取余,模运算。
-5%2 = -1
5%-2 = 1
如果%运算有负数的时候,负数只参考被模数。(5就是被模数)知道就行,一般很少用负数运算。
任何数模以2不是0就是1,正因为有这个特性可以进行一些开关算法的定义。(是否)
隔一行给一个表单设置颜色,等等。
“+”连接符
任何数只要和字符串链接都是生成一个新的字符串。
所以可以用这个方法把一个数字类型或者是别的别的类型+加上一个””,变成字符串类型。
int a=3,b;
b=a++;(大白话讲就是先把a的值赋值给b,然后再自增,但是内存不是这样的原理。)
a++,a在前面,a的值需要先参与其他预算(就是a赋值给b的过程),然后再去参与自增的动作。
b=a++;这里面既有自增预算又有赋值运算。a++,a本身是个变量,a要先运算,a要做个赋值运算,但是a没有运算完,a要做个++运算,所以为了保证a的值和其他运算的参与,所以先做了一个自己值的保留,预存,不保留的话自增完原值就没有了。
a的值预留下来再付给b。
所以a会在内存当中,先把a的值临时预存下来。然后到运算区中加1,等于4,再赋值给a。

int i=3;
i=i++;
system.out.println(i);
输出i的值是3,不是4。(这个题目很纠结。)
解析见下图。

short s=3;
s+=4;
s = s + 4;
system.out.println(s)
第一种不会报错,第二种会报错。
这个现象和上面的byte类型的差不多。3是int类型4个字节,short是2个字节,舍去高位留下最后的字节,进行存储。
s+=4,在底层进行了强制类型转换,相当于s= (short)s+4;这是赋值运算所具备的特点。
而单纯的s=s+4;因为都是变量可能超出short类型范围。
关于JDK中的运算符和变量的更多相关文章
- JS中的运算符 以及变量和输入输出
1.算术运算(单目运算符) + 加 .- 减.* 乘. / 除. % 取余.++ 自增.-- 自减. >>> +:有两种作用,链接字符串/加法运算,当+两边全为数字时,进行加法运算, ...
- python中的运算符及表达式及常用内置函数
知识内容: 1.运算符与表达式 2.for\while初步了解 3.常用内置函数 一.运算符与表达式 python与其他语言一样支持大多数算数运算符.关系运算符.逻辑运算符以及位运算符,并且有和大多数 ...
- Android中配置JDK和SDK的环境变量
JDK环境变量的配置: 右击"计算机"或"我的电脑",选择"属性"-->"高级"或"高级系统设置&quo ...
- JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构
JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...
- 13万字详细分析JDK中Stream的实现原理
前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的).Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性( ...
- 错误: 从内部类中访问本 地变量vvv; 需要被声明为最终类型
从github 下载了源码, 进行编译, 出现了下面的错误 E:\downloads\ff\elasticsearch-master\elasticsearch-master>GRADLE :b ...
- C语言中的运算符
1. 在C语言中运算符包括:算术运算符.关系运算符.赋值运算符.逻辑运算符 2.用运算符把变量.常量连接起来的式子就是表达式 3.我们阅读一个表达式,从表达式的功能和表达式的值来看 4. 算术运算符和 ...
- Java 学习第一步-JDK安装和Java环境变量配置
Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09 Java SE 阿超 9046 views Java作为当下很主流的编程语言,学习Java的朋 ...
- JDK中的Timer和TimerTask详解(zhuan)
http://www.cnblogs.com/lingiu/p/3782813.html ************************************************** 目录结构 ...
随机推荐
- Java设计模式系列之工厂模式
工厂模式将大量有共同接口的类实例化,工厂模式可以实现动态决定实例化哪一个类的对象,工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factory):添加某一种类型的 ...
- 排序算法之直接插入排序(java实现)
package com.javaTest300; import java.util.Arrays; public class Test041 { public static void main(Str ...
- 当心回车符破坏你的JSON数据
今天发现系统中一个地方获取JSON数据时,时而失败,时而成功,最后发现是回车符搞的鬼. 当你的JSON中有回车符时,会致使你的JSON出现格式错误:解决办法是在保存数据,或整理数据向客户端输出时将回车 ...
- linux下登陆用户的行为信息—w和who命令详解
查看用户的操作系统管理员若想知道某一时刻用户的行为,只需要输入命令w 即可,在SHELL终端中输入如下命令: [root@localhost ~]# w 可以看到执行w命令及显示结果. 命令信息含义上 ...
- TQ210裸机编程(4)——按键(中断法)
S5PV210有4个向量中断控制器(VIC),每个向量中断控制器包含32个中断源. 当某个中断源产生中断时,CPU会自动的将VICxVECTADDRy(x=0,1,2,3,y=0-31)寄存器的值赋给 ...
- CommandLine 和 Options
用到的jar包 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli& ...
- VirtualBox虚拟磁盘扩容
1. cmd中运行 VBoxManage modifyhd D:\我的资料库\Documents\VirtualBox VMs\ubuntu\ubuntu.vdi --resize 提示错误 Syn ...
- ElasticSearch中文分词(IK)
ElasticSearch常用的很受欢迎的是IK,这里稍微介绍下安装过程及测试过程. 1.ElasticSearch官方分词 自带的中文分词器很弱,可以体检下: [zsz@VS-zsz ~]$ c ...
- [EntLib]微软企业库5.0 学习之路——第一步、基本入门
话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...
- Js面向对象和数据类型内存分配(转)
一 Js基本数据类型以及内存情况 1 Undefined Undefined类型只有一个值undefined,在使用了声明但未初始化的变量的时候,这个变量值就是undefined 1 var hi; ...