java基础1
来源:互联网 发布:php程序员的工作状态 编辑:程序博客网 时间:2024/06/16 05:51
睡不着所以想看下java基础,随便整理一下笔记
1.进制
二进制:0,1 ,满2进1.
八进制:0-7 ,满8进1. 用0开头表示。
十进制:0-9 ,满10进1.
十六进制:0-9,A-F,满16进1. 用0x开头表示
0000 0110 二进制
1111 1001 取反
1111 1010 加1
负数二进制的最高位是1,整数是0
如果一个负数转为整数,先-1,再取反
2.java的基本类形
--------------------------整数类型----------------------------------
//整数默认:int
short短整形:16个二进制位
int整数:32个二进制位
long长整型:64个二进制位
--------------------------浮点型---------------------------------
//小数默认:double
double双精度:64个二进制位
---------------------------字符型---------------------------------
//char里面可以装中文,但只能装一个中文
char字符型:16个二进制位-------------------------------------------布尔型--------------------------------------
boolean布尔型:1个二进制
数据类型 大小 范围 默认值
byte(字节) 8 -128 - 127 0
shot(短整型) 16 -32768 - 32768 0
int(整型) 32 -2147483648-2147483648 0
long(长整型) 64 -9233372036854477808-9233372036854477808 0
float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f
double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
boolean(布尔型) 1 true/false false
3.自动类形转换
1.自动类形提升
int x=5; 一个int是4个字节,一个字节00000000,在二进制中5代表的是:00000000 00000000 00000000 00000101
x=x+b; x是4个字节,b是一个字节,最小的b可以向最大的x(自动类形提升)转为同样是4个字节,付值给左边的int x同样是4个字节,
x=00000000 00000000 00000000 00000011 + 00000000 00000000 00000000 00000101;
2.强制类形转换(但这样很容易掉失精度)
b=b+4; b是byte一个字节,4默认是int四个字节,口=口+口口口口; 自动类形提升后,口=口口口口+口口口口,左边的b只有一个字节不能放下4个字节的值;
会出现丢失精度,解决方法,强制类形转换,b=(byte)(b+4);一般这种方法好少用,可能会丢失精度,如果值超出了所指定的byte的最大值(-127到128)就会出现负数,
比如:
byte 127;
byte b =(byte)127+2;自动类形提升后的2是4个字节的int,
129的二制值00000000 00000000 00000000 10000001
强制类形转换后byte一个字节:10000001(这里肯定是一个负数)
整数转为负数,先-1:10000001,减一后:10000000
再取后:1111111 ,转为十进制后127 ,所以找印出来的值是-127
3.练习:
System.out.println('a');//会打印a
System.out.println('a'+1);//会打印98,a码表中表示97,同是‘a’是两个字节与1是4个字节相加,类型提升是4个字节的int
System.out.println((char)('a'+1));//强制类型转换打印是'b'
System.out.println('你'+0)//如果想知道'你'字对应的数字是多少与0相加就得了
--------两个常量相加编辑器自动类型型转换------------
byte b=4;
b=5+2;
//二行都没有出错,打印"7"
//在java中默认的数字是int,所以4是int类型,编辑器在编辑的时候发现4是在byte类型中,所以自动转换
//所以b=4;与b=5+2;两行原理都是一
-------有一个如果是变量,类型不固定,编辑不会自动转变-------------
byte b=4;
byte b1=5,b2=2;
b=b1+b2;
//打印可能损失精度,b=b1+b2;与b=b1+4;原理一样,(4是int类型)
//因为这里b1使用的是变量,因为变量是不固定的b1有可能是100000,所以可能会损失精度
//----------解决方法强制类型转换--b=(byte)(b1+b2);
----总结-----
右边两个固定的常量相加,符值给左边可以自动类型转换。
右边如果是常量,类型不固定,编辑无法自动类型转换
4.语句
1.switch语句
switch(x)
{
default:
System.out.println("no");//在这里没有break
case 1:
System.out.println("c");//在这里没有break
case 4:
System.out.println("a");
break;
case 2:
System.out.println("b");
break;
2.for语句
for(初始化表达式1;循环条件表达式2,5 ;循环后的操作表达式4)
{
3,6 执行语句;(循环体)
}
注意:循环条件表达式2里面的内容必须有写,不然就会无限循环。
2.下面的例子是通过的,不会出现无限循环如:
int y = 1;
for( ; y<3 ; )
{
y++;
}
{
nei:for(int y=0; y<6; y++)
{
System.out.println("x="+x);
//break;如果没有别名结束的是当前循环。
break wai;//写上别名,所以结束的是指定别名上的循环
}
}
}
5.运算符
1.比较运算符
1.1 &与运算符
true & false = false;
false & true = false;
false & false = false;
true & true = true;
&:只有两边为true结果为true,否则为false。
或者 只要有一边为false,结果是false。
1.2 | 非运算符
false | true = true;
true | true = true;
false | false = false;
|:只有两边都为false,结果为false,否则为true。
只要有一边为true,结果是true。
&:无论左边结果是什么,两边都参与运算。
&&:当左边为false时,右边不参与运算。
| 和 || 的区别:
|:无论左边结果是什么,两边都参与运算。
||:当左边为true时,右边不参与运算。
1.3 ^异或运算符
false ^ true = true;
false ^ false = false;
true ^ true = false;
^:两边相同为false,不同为true。
2.位运算符(位运算符运算快)
2.1 <<左移运算符
因为在java中,一个int是32位,所以3的二进制是:
00000000 00000000 0000000 0000011:这个就是3的二进制码
00000000 00000000 0000000 0001100:左移二位,后面拿0补上(记位数的值:1248)
在计算机上算:按下十进制3,转二进制得到11,在后面加上两个零,得到是12.
2.2 右运算符:>>
00000000 00000000 0000000 0000110:这是6的二进制
00000000 00000000 0000000 0000011:右移一位 ,结果是3
技巧:6>>1=3 6/2(1)=3
6>>2=1 6/2(2)=1//6/4=1不有余数
2.3>>左移运算与>>>无符左移动算的距别
>>>:无论高位是什么,都是补0 10000000 00000000 0000000 0000110 无符号左移两位:00100000 00000000 0000000 0000110
2.4 与运算符:&
110
&011
————————0是假,1是真:如果两个为真的时候才会真
010 所以得到的数是2
应用场影1:0010101101 如果想得到后四位可以用到&运算符,
&0000001111 与上4个1是15来的 //如果与上255或者0xff刚好一个8位的11111111
-----------------如果两个都是1才是1
0000001101:这样就可以得到后4位的算了
应用场影2:>>>000011110101 左移4位,可以得到中间的4位,两个运算符一起用可以得到中间的数
&001110001111
————————————————————————
0000000000111
2.5或运算符:|
110
|011
————如果有真都是真
111
2.6异或运算符:^
110
^100
____如果相同为0,不同为1
010
应用场景:一般用于加密:
6^4=2
110
^100
____如果相同为0,不同为1
010
^100 再与原数据异或,就可以得到原数据了
----
110
2.6反码运算符:~
取反=-6,再加1 等于-7
因为~6的反码是-7
如果想得到6的负数表现形式,所以+1
这样才是6的负数表的二制的表达形式
(6的负数,等于6的反码加1 ,如果不加1,等于-7)
负数二进制的转换 ,负数的二进制最高位是1
0000 0110 :6
1111 1001 :取反,0变1,1变0
1111 1010 :+1 这样就得到-6了
3.算术运算符
3. 1 %取模动算(得到余数)
2%6=2
3%6=3
左边=右边=0 如:-6%-6=0
左边小于右边=左边 如:3%-6=3
3.2 自增动算(++)
b=a++;//如果++放在后面,打印b=3,a=4
---------------
int a=3,b;
b=++a//如果++放在前面,打印b=4, a=4
3.3 付值动算(=,+=,-=,*=,/=,%=)
int x,y,z;
x=y=z=4;//都是4
-----(+=)------
int a=3;
a+=2;//相当于a=a+2;,如果非有什么不一样,可以看下面的例了
//打印5
-------这两个例子,不一样在于有一个需要手动转换(+=)------------------------
short s=4;
s=s+5;//损失精度,因为short是2字节,5是int4字节,转换后的4个字节不能放进short里
------------
short s=4;
s+=5;//编译通过,赋值动算,具备自动转换
4.三元运算符(在这不举例子)
- Java基础--基础语法1
- Java基础-1、基础语法
- 1-1 java基础
- java基础(1)
- Java基础学习1
- JAVA基础1
- java基础(1)
- Java 基础题1
- java基础1
- Java线程基础1
- java基础1、2
- java基础整理1
- java基础加强1
- java基础1
- Java基础1 概述
- java基础加强1
- java基础笔记1
- java 基础1
- Linux vim/vi编辑器的基本操作和基本命令的使用
- 骨牌的算法推算 p2046
- C++空类为何占一个字节
- uploader 基于上传插件的总结
- C++编程入门系列之二十一(C++程序设计必知:类的静态成员)
- java基础1
- JavaScript --Date方法和API
- FZU 1402 猪的安家 中国剩余定理
- 经济机器是如何运行的?
- Java MySQL 中文出现乱码的问题
- 关于单线程和多CPU的问题
- HotSpot中Parallel Scavenge/Parallel Old与Serial/Serial Old内存分配策略区别
- Dreamweaver创建列表及查找与替换
- Golang语言学习资源