我是靠谱客的博主 落寞航空,最近开发中收集的这篇文章主要介绍Java从入门到放弃02Java入门基础02,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java入门基础02

进制的转换

任意进制到十进制的转换:位权展开法
十进制到任意进制的转换:除基取余,直到商为0,余数反转
任意进制到任意进制的转换:以十进制作为桥梁

8421码

一个方便2进制到10进制转换的速查表

原码/补码/反码

最高位为符号位,正数最高位为0,负数最高位为1
正数的原码/补码/反码是一样的
负数的反码计算规则:符号位不变,其他位按位取反
负数的补码计算规则:反码加1
注意:计算机的底层运算使用的是补码

常量

在程序运行过程中,值不会改变的量
Java中的常量类型有两种:1.字面值常量 2.自定义常量(面向对象部分讲解)
字面值常量的类型
字符串常量 由双引号括起来的内容 如System.println.out("hello world")
整数常量
所有整数
小数常量
所有小数
字符常量
由单引号括起来的内容
(单引号只能引单个字母/单个数字/单个符号)
布尔常量
true/false
空常量
null

变量

变量:可以在某个范围内发生变化的量(用来不断的存放同一类型的常量,并可以重复使用)
变量的定义方式:数据类型 变量名=赋值;
变量在使用之前必须赋值和定义数据类型(变量的重新赋值会覆盖掉旧值)
如 int b;
b=20;
b=100;
在同一作用域里(一对{}所括起来的范围内)不能同时定义两个同名变量
如 int b=20;
int b=30;

数据类型

数据类型用来声明数据所用空间的大小,给不同的数据类型在内存中分配不同大小的内存空间。
数据类型有四类八种(整数类型默认int,小数类型默认double)
整型
byte
1(8bit)
-128---127
short
2(16bit)
-2^15---2^15-1
int
4(32bit)
-2^31---2^31-1
long
8(64bit)
-2^63---2^63-1
赋值后加L 如long a=19999L
浮点型 float
4(32bit)
-3.403*10^38---3.403*10^38
赋值后加F 如float b=1.9999F
double
8(64bit)
-1.798*10^308---1.798*10^308
字符型 char
2(16bit)
0---2^16-1
(注:Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节,因此Java中的字符可以存储一个中文汉字)
布尔型 boolean 1个字节
(为了解决1.原码不能将减法用加法来计算,2.反码中00000000和10000000存在正负0的问题,计算机的底层运算采用补码,值得注意的是机器码规定-128没有原码和反码,-128的补码为10000000)

自动类型提升

byte short char在参与数学运算时会自动提升为int类型,如果还有long float参与运算,则会相应的提升为double类型。

强制类型转换

定义:强制将一个数据转换成我们想要的数据类型,强制类型转换有可能会带来精度损失。
如int类型强转至byte类型会丢弃掉3个字节
强转类型的定义方式:数据类型 变量名=(强转数据类型)变量值
如:byte a=(byte)10
将int类型的10强转为byte类型10

Java的常量优化机制

多个常量相加时,他会先算出结果,看没有在这个数据类型的范围内,如果在,不报错,如果超出范围,报错
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;//正确
byte b2 = 4;//正确
byte b3 = b1 + b2; //错误,byte short char类型在进行运算前首先转换为int类型,该行代码中b1和b2在运算时为int类型 而b3为byte类型,因此程序会报错。
byte b4 = 3 + 4;//正确,常量优化机制

字符运算

字符参与运算,对照ASCII码表中字符对应的数值
加号可以做数学运算符,也可以做连接符(当+运算两端只要任意一端是字符/字符串,加号起连接符的作用)
eg.
System.out.println(10+12+"Hello world!"+10+12)
输出结果应为:22Hello world1012

运算符

01 数学运算符

数学运算符有:+ - * / ++ -- %
需要注意的是,在只有自加或自减的运算中:num++与++num的运行结果是一样的,不分先后。而在有自加自减的混合运算中,如果是num++,则应该先进行运算(运算时使用的是num的初始值),再进行num自加1运算给num重新赋值;如果是++num,应先进行num自加1运算给num重新赋值,再进行运算。
eg.
class operator01{
public static void main(string[] args){
int num=1;
int rr=3+(num++)-1+(num--)+1+(++num)+2+(++num)+10;
System.out.println(rr);
System.out.println(num);
}
}
程序结果应为:rr=3+(1)-1+(2)+1+(2)+2+(3)+10=23

02 赋值运算符

= += -= *= %=
eg.
class operator02{
public static void main(string[] args){
byte num=10;
num+=128;//num+=10与num=num+10不同之处在于前者可以进行强制类型转换
System.out.println(num);
}
}
程序运行结果应为138

03 比较运算符

比较运算符有> >= < <= == != instanceof
比较运算符的运算结果是布尔类型
eg.
class operator03{
public static void main(string[] args){
int a=10;
int b=20;
boolean flag=a==b;
System.out.println(flag);
}
}
程序运行结果为 false

04 逻辑运算符

逻辑运算符有:&(与) |(或) !(非) ^(异或) &&(短路与) ||(短路或)
注意&与&&的区别
eg. class operator04{
public static void main(string[] args){
int a=10;
int b=20;
int c=10;
int d=20;
boolean flag1=a<10&&(b++)>10;//&&的两端有任意一端为false,另一端不进行运算。
System.out.println(flag);
System.out.println(b);
boolean flag2=c<10&(d++)>10;
System.out.println(flag2);
System.out.println(d);
}
}
程序运行结果为flag1=false b=20
flag2=false d=21

05 位运算符

位运算符有与(&)、或(|)、异或(^),按位取反(~),<<(左移),>>(右移),>>>(无符号右移)
注:位运算是直接对二进制补码进行运算
eg. class operator05{
public static void main(String[] args) {
/* 3的补码为00000011
4的补码为00000100
*/
System.out.println(3&4); //
&按位运算,有0则0,补码计算结果应为00000000
System.out.println(3|4); //
|按位运算,有1则1,补码计算结果应为00000111
System.out.println(~3);
//
~按位取反,补码计算结果应为11111100
System.out.println(3>>2); //
把>>左边的数据除以2的移动次幂(右边数据) 结果应为3/2^2=3/4 int类型只保留整数位0 (将结论记为右除)
System.out.println(3<<2); //
把<<左边的数据乘以2的移动次幂(右边数据) 结果应为3*2^2=12
(将结论记为左乘)
}
}
程序运行结果:0 7 -4 0 12

06 位异或

特征:一个数被另一个数位异或两次,该数不变
eg.
class operator06{
publc static void main(string[] args){
System.out.println(3^4^3);
System.out.println(3^4^4);
}
}
程序运行结果为:4 3

07 值交换

值交换:让两个变量的值进行变换
方式1 采用中间变量
eg. class operator07{
publc static void main(string[] args){
int a=10;
int b=20;
int t=a;//把a的值保留给t
a=b;//把b的值赋给a
b=t;//把a的值赋给b
System.out.println("a="+a);
System.out.println("b="+b)
}
}
方式2 a=a^b;b=a^b;a=a^b;
方式3 a=a+b;b=a-b;a=a-b;
方式4 a=(a+b)-(b=a);

08 三位运算符

语法:表达式?结果1:结果2
运算:表达式结果为true返回结果1,否则返回结果2
应用:求两个数的最大值或三个数的最大值
eg. class operator08{
publc static void main(string[] args){
int a=10;
int b=20;
int c=100;
int max=a>b?a:b;
int maxmax=max>c?max:c;
System.out.println("最大值是"+maxmax);
}
}
程序运行结果:最大值是100

09 关于EditPlus的用户工具配置

  • 步骤1:打开EditPlus>>工具>>配置用户工具>>组名>>新的名称(输入名称,如编译运行)>>添加工具>>应用程序>>菜单文字(输入名称,如编译)>>命令(选择jdk1.8.0_152下bin目录中的javac)>>参数设为文件名>>初始目录设为文件目录>>动作选则捕捉输出>>应用>>确定
  • 步骤2:添加工具>>应用程序>>菜单文字(输入名称,如运行)>>命令(选择jdk1.8.0_152下bin目录中的java)>>参数设为文件名(不含扩展名)>>初始目录设为文件目录>>动作设为捕捉输出>>应用>>确定

最后

以上就是落寞航空为你收集整理的Java从入门到放弃02Java入门基础02的全部内容,希望文章能够帮你解决Java从入门到放弃02Java入门基础02所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部