java基础(个人学习笔记,不断修改更新中)

JAVA笔记


1.什么是java语言?java能做哪些开发?


计算机只能识别01组成达机器语言,人们可以学习和掌握机器语言,但是非常麻烦,

eg:如10进制达10,机器语言:00000000 00000000 00000000 00001010.

人们对机器语言进行简化,简化到极致就产生高级语言,java就是这种高级语言。

1991年,SUN公司,GREEN项目小组

1992年,JAME GOSLINGjava之父

1995年,java问世

1996年,JDK1.0问世

1999年,JAVA2.0(分为三部分:JAVA:SE/JAVA EE/JAVA ME

2009年,Oracle公司以79亿美元的交易总额收购了SUN

 

JAVA SE-java平台标准版,java平台的基础

  java平台标准版包含了运行java程序的基本环境和核心类库。

  也定义了基于桌面开发的基础类库,

egoffice,捕鱼达人

JAVA EE-java平台企业版

  java平台企业版是构建在java平台标准版基础上的,用于构建企业级应用

  所谓企业级应用就是给一些大型商业组织,企业开发应用程序,

eg:用来管理财务的用友财务软件,

基于B/S架构的互联网网站开发

eg:百合网

JAVA ME-java平台移动版(由于硬件方面发展不够,所以此方面基本转移到安卓)

  java ME是指给移动设备,便携式电子设备或嵌入式设备(智能手机,pad,电子书)提

  供java的解决方案。

 

 

什么是编程

命令计算机按照一定的顺序去处理指令和数据。JAVA EE-java

 

软件开发流程

IT生产业;计算机硬件业,通讯设备业,软件,计算机及通信

IT应用业

岗位设置

广州市华软科技,同杰软件,亿讯软件,泰豪软件,凯通软件,科蓝软件,

电子商务;阿里  一九在线  秒够  维品会

通信行业;电讯盈科 天讯瑞达 广州金鹏集团有限公司 香港城市电讯

游戏类;擎天柱  众游 游爱网若 手游网络 4399

电力;北京中合实创电力科技有限公司

制造业;光宝电子 金尊荣日化品

金融业;

政府;

电信;

岗位

运维 实施工程师 研发 软件测试 需求分析 

Linux是一种操作系统

管理其他软件的一个软件

起源1991年,1995你啊随着互联网的发展而流行起来

是一个开源的操作系统,是一个类Unix操作系统

目前,Linux是主流的服务器操作系统,广泛应用与互联网,云计算,只能手机(Android)等领域;

由于java主要用于服务器端的开发,因此java应用的部署环境有很多为Linux

User home 【用户主目录】

用户的家,当前用户具有最高管理权限的地方  /home/soft01(用户名)

终端=控制台=命令窗口

常用命令:

pwd:显示当前工作目录

ls:显示当前工作目录内容

cd:更改当前工作目录

cd /:跳入根目录

cd +目录首字母+Alt+/):快捷方式进入内容目录

clear:清屏

cd ..:进入当前目录的上一层目录,也称为父目录”“父文件夹父路径

cd ~:切换当前用户主目录。(cd = cd ~ cd /home/soft01

cd ./soft01:表示切换目录到当前目录到当前目录中的soft01

getid:启动一个文本编辑器

mkdir:使用mkdir命令创建一个demo01目录(格式:mkdir+空格+demo01(文件名))

touch:touch helloworld.java创建一个名为HelloWorld.java

绝对路径:

eg/home/soft01 表示从根目录/开始的路径位置

cd /home/soft01

相对路径:

eghome/soft01 表示从当前目录位置开始的路径位置day01  day01.txt  MyEclipseGen.java

也就是相对于当前目录的目录

home/soft01只有在当前目录是“/”时候才成立!否则就不成立

JAVA编译运行过程

程序员编写的java源文件(.java)首先要经过编译,生成所谓字节码文件(.class);

java程序的运行需要JVM的支持,JVM(虚拟机)是一个软件,安装在操作系统中,为字节码文件提供运行环境:

.exc(可执行文件)

java官方提供了针对不同平台的JVM软件,这些JVM遵循着相同的标准,只要是标准的 .class文件,就可以在不同的JVM上运行,而且运行的效果相同,

这样,就实现了所谓一次编译到处使用

va虚拟

JDK java Development(开发) Kit java开发工具包】

JRE java Runtime Environmentjava运行环境】

JVM java Virtual Machinesjava虚拟机】

运行一个java程序所需要的最小环境为JRE,开发一个java程序所需的最小环境为JDK

 

JDK版本

win7

x86 32位版本 可安装32位版本的JDK             OS:操作系统)

x64 64位版本 可安装32位或者64位版本的JDK

安装Eclipse必须安装位数相应的JDK

配置环境变量

右击我的电脑”--属性--高级--环境变量--系统变量(下面一栏)

假设JAVA安装的位置是:C:\Program files\java\jdk1.7.0_05

设置环境变量

PATH=C:\Program files\java\jdk1.7.0_05\bin;

原有PATH的内容前面添加,千万不能删除原有内容

CLASSPATH的值一个.即可

JAVA_HOME的值是JDK的安装目录,(不是bin目录)

C:\Program files\java\jdk1.7.0_05

Eclipse安装顺序

1.安装JDK

2.配置环境变量PATH CLASSPATH JAVA_HOME

先配置环境变量

3.释放Eclipse.zip

4.可运行eclipse

打开MyEclipse

右上角 选择 --java

Window----Reset Perspective..

新建项目:File---new--JavaProject


1,计算机只能处理数据

任何事物都需要作为数据交给计算机处理。

1】变量:变量就是存储数据的单元,是数据处理的载体。

2java的变量必须声明后使用,声明时候必须给定明确数据类型

3】在使用之前,变量必须初始化,

4】变量的命名要符合语法规则

5】变量有建议的命名的规则:不能使用中文长变量名,驼峰命名法

6】变量在赋值的时候要保证值的兼容性,不兼容不能赋值。

2,变量命名要求:

1)首字:1,字母

  2,下划线  "_"

  3,“$”符号

2)其余部分:1,数字

   2,字母

   3,下划线,"_"

   4"$"符号

3)关键字不能作为变量名:java编程使用的表达语法的单词

egint byte

eggoto  const  保留未使用的关键字。字面量true false null不能作为变量。语言没有使用这两个单词,留下以后未来使用的单词

命名规范:见名知意。简短且能清楚的表明变量的作用,通常第一个单词的首字母大写,其后单词的首字母大写。

eg: String 隔壁老王=0;     不建议使用,但是完全符合语法!

3,变量三要素:

1,数据类型:变量的类型,决定变量空间的大小

2,变量名称:变量名,方便计算机找到这个变量

3,变量的值:存储的数据

4,变量的初始化有两种:

1,在声明变量(定义变量)时候直接初始化

int a=9

2,先声明变量,在利用赋值语句初始化

int=b

b=10

 

eg1int a,b=10;//只对b进行了初始化

2int sum

   sum=sum+10//sum没有初始化,报错

java中直接给出的固定数值称为直接量,字面量就是给一个常数

//a是变量 100是直接量 字面量

5Java中整数直接量的语法

1,整数直接量类型是int

2,整数直接量不能超过范围

30x开头是16进制

0abcdef

40开头是8进制(很少用)

   07

5,其他情况是10进制

eg:面试题

哪些直接量是合法的:  A80  B081  Cff   D0xFH         答案:(A

long类型

在表示整数时,如果int类型的范围不够,可以使用long型一个long型的变量占用8个字节(64位),最大表示范围为-2^63~2^32-1

System.currentTimeMillis();方法

JDK提供System.currentTimeMillis();方法,197011日零点到现在所经历的毫秒数,常用于记时间,而1970年以前的用负数表示

long now=System.currentTimeMillis();

now/1000----1970到现在经历多少毫秒

浮点数直接量是double类型

通常写法:3.14314.00.1

科学技数:1.25E21.25e2

如果需要精确的运算可以考虑放弃使用doublefloat而使用BigDecimal

char类型

以下三种位char类型赋值方式

1,字符直接量:eg'A'

2,整形直接量,范围位065536

3Unicode形式:'\u0041'Unicode字符的16进制形式

'0'-----48      57

'A'---65

'a'---97

 

转意字符:

'\n':表示回车符

'\r':换行

boolean类型

truefalseboolean类型的字面量,不是关键字

基本类型间转换

1,不同的基本类型直接可以互相转换

1,自动类型转换(隐式类型转换)|:从小类型到大类型

byte--short--int--long--float--double

            char

2,强制转换,从大类型到小类型需要强制转换符

有可能造成精度损失或者溢出

byte short char int运算规则

1int字面量在不超范围的时候,可以赋值给byte char short

byte b1=6

byte b2=7

byte b3=b1+b2//报错,因为java按照int+int类型计算,得结果为int类型,int类型不能直接赋值给byte

应调整优先级byte b3=(byte)(b1+b2);

byte bx=6+8//编译通过。字面量运算按照结果作为字面量看待

byte bb=6*68//报错,结果超过byte的范围,127-128

导入项目步骤

1,解压项目包

2,打开MyEclipse-->File-->Import-->ExistingProjects into workspace-->Browse-->选择项目包-->finish

day03

 

1,运算符

1,使用 运算符:取余运算

一个数对3取余

1,负数结果 (-30]

2,正数结果  [03

3,正数结果是周期型结果

*****在软件中周期性变化,常用余数运算处理。*****

2,  ++  --自增(减)运算

1i++:<==>i+=1<==>i=i+1  //先赋值 后自加 。int i=1;int b=i++; >>>>>>>b=1,i=2

2++i:<==>i+=1<==>i=i+1  //先自加 后赋值 。int r=1;int b=++r; >>>>>>>b=2,r=2

2,逻辑运算

 &&  ||  ! 

同时为真true   &&且  为真,否则就为假

同时为假false  ||或  为假,否则就为真

关于短路逻辑问题

java逻辑运算遵循短路逻辑的原则

对于“&&”,当第一个操作数为false,将不会判断第二个操作数,无论第二个操作数为何,结果均为false

对于“||”,当第一个操作数为true时,将不会判断第二个操作数,无论第二个操作数为何,结果均为true

3,扫描仪

import java.util.Scanner;//引入扫描仪

Scanner cosols=new Scanner(System.in);//声明扫描仪

int a=cosols.nextInt();//使用扫描仪,将用户的数据赋值。

4,符合赋值运算

int b

int a=5+(b=6);

a+=5完全等价于a=(int)(a+5)

 -=   *=  /=  %=  均适用

符合赋值运算表达式的值是最后赋值的值

5,字符串连接运算

加号在java中是两种完全不同的运算,但是使用了统一个运算符

1,当加号两端都是数时候执行数值加法

2,当加号两端中的任何一端是字符串时候执行字符串连接(字符串不是字符char

 

int a=8

System.out.println('1'+a);//结果57.字符是unicode编码数值!

6,三木运算==三元运算

int rows =35;

int size=10;

int pages=rows%size==0?rows/size:rows/size+1;

         【     判断是否成立   】【   成立 】【   不成立   】

String a=((year%4==0)&&(year%100!=0))||(year%400==0)?year+"是润年":year+"不是润年";

嵌套模式,取三个数中的最大值

int t=a>b?(a>c?a:c):(b>c?b:c);

7if语句

if(逻辑表达式){                  逻辑表达式为真,执行if里面的语句

语句1

语句2

}



1,字符串

计算机计算原理

   char c=65;

String s1=Character.toString(c);//字符在输出的时候自动调用Character.toString()方法   字符数据49,转换为“1”

System.out.println(s1);//A

String s2=Integer.toString(c);//整数在输出的时候自动调用Integer.toString()方法

System.out.println(s2);//65

2,分支语句使用原则

1,一个条件决定是否执行一个代码块,

if(条件){语句}

2,一个条件,两个选择, 

1if(条件){true语句}else{false语句}

2)三元运算     a>b?a:b; 

String a=((year%4==0)&&(year%100!=0))||(year%400==0)?year+"是润年":year+"不是润年";

3,多路选择

  1if....else if...语句

if(条件1){

语句1

}else if(条件2){

语句2

else if(条件3){

语句3

}else{

语句4

}

 2switch case 语句。使用分支条件是整数”.注意case default后面为:分号

switchcase{

case 0:

case 1:

println(a);

break;

case 2:

println(b);

break;

case 1:

println(c);

break;

default:

println(d)

}

3,排序问题

从小到大

如果a>b,进行数据交换

中间量t开头,首位相连   t=a;a=b;b=t;

4,循环语句

循环的两个要素

循环体:循环语句中重复执行的语句块

循环条件:循环执行过程的结束(退出)条件

1while循环:在性能换体开始位置检测循环条件的循环。

1,一般情况下循环处理和次数无关

2,循环条件在循环体开始位置进行检查

true执行语句,false跳出while循环

whileboolean语句){

 true语句

}

false语句

while(true){}死循环,中用break跳出结束死循环

 

2do-while循环结构:boolean结果为true再次执行循环

do{

语句块

}while(boolean表达式)

int  pwd ;

do{

    System.out.print(“请输入密码”);

    pwd = scanner.nextInt();

} while ( 123 != pwd) ;

使用break语句跳出循环

 break用在循环体中用于打断循环

1,可以利用死循环+break代替do while

2,如果循环结束条件在循环体中部出现,使用死循环+break解决

continue:

continue语句只能用于循环中,它的作用为跳过循环体中剩余语句而执行下一次循环

随机数 Random

double n=Math.random()  n=[0,1)  (int)(n*100)=[0,100)     (int)(n*100)+1=[1,101)

此方法支持多线程

Random ran=new Random()

int num=ran.nextInr(10);//09

Math.sqrt(n);n的平方根

整形数据输入:in.nextInt();来接收

双精度小数输入:in.nextDouble();来接收

字符串输入:in.next();来接收

一串字符据输入:in.nextLine();来接收

in.nextLine().toUpperCase();此方法可将控制台接收的字符串转换为大写字母

day05

1for循环

for(表达式1;表达式2;表达式3){

语句块循环体

}

计算表达式1的值,通常为循环变量赋初值;

计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真则执行循环体一次(语句块),否则跳出循环;

执行循环体;

计算表达式3的值,此处通常写更新循环变量的赋值表达式;

计算表达式2的值,若值为true则执行循环体,否则跳出循环;

如此循环往复,直到表达式2的值为false

 

for循环变量经常用i,j,k,.   i=index

for循环经典用法

for(int i=0;i<10;i++){}//i=0 1 2....9

for(int i=0;i<10;i+=2){}//i=0 2 4 6 8

for(int i=1;i<10;i+=2){}//i=1 3 5 7 9

for(int i=10;i>=0;i--){}//i=10 9 8 7....0

for特殊用法

int i = 1;

for (  ; i <= 10 ; i + + ) {}

for ( int i = 1 ; i <= 10 ; ) {i++}

for (   ;   ;   ) {}

break用法

使用范围:可用于循环语句或者switch语句中

作用:是程序终止循环而执行循环后面的语句

continue用法

使用范围:只能用于循环语句中

作用:用于打断此次循环进入下一次循环

以下代码正确

    public static void main(String[] args) {

        for(int i=0,j=0,k=0;i<10&&j<4&&k<10;j+=2){

           System.out.println(i++);

            System.out.println(++k+i);

       }

   }

2,数组:是一种最基本的数据结构

程序=数据+算法

数组:相同数据类型的元素组成的集合

1,语法:

声明数组,并指定数组容量大小

 声明     初始化

Aint[] arr=new int[10]

int arr[];//等价于int[] arr,建议用此种方法

arr=new int[10];

声明数组,并赋值

Bint[] arr={1,2,3,4,5,6,7,8};//大括号部分只能在声明变量直接初始化

Cint[] arr

arr=new int[]{1,2,3,4,5,6,7,8}//注意不可直接arr={12....},需加new    

C  int[] arr=new int[]{1,2,3,4,5,6,7,8}//没有长度,实际长度就是元素的个数

总结:三种元素初始化方式

A, new int[长度]

B, {元素1,元素2}

C, new int[]{元素1,元素2}

如果创建长度很长的数组用A

如果事先已知元素,数量不是很大使用B

因为B值只能用在声明变量初始化,在B不适合用的场合使用

数组长度:arr.length

数组下标最大值为数组长度减1

 

数组复制:已存在的两个数组之间惊醒元素的复制

System.arraycopy()方法可实现数组的复制

public static void arraycopy(Object srcint srcPos,Object dest,int dextPos,int length)

int[] a={111,222,333,444}

int[] a1=new int[6]

System.arraycopy( a,     1,      a1,  0,       4)

                         从数组a的第2位数 到数组a1第一位开使赋值4个元素

数组的复制                      

java.util.Arrays类从copyOf方法可实现数组的复制

特点:生成新数组是原数组的副本

newLength小于原数组,则进行截取

newLength大于员素组,则用0或者null进行填充

int[] a={10,20,31,40,50};

int[] a1=Array.copyOf(a,6);

       新数组a1={10203040500}

数组的扩容(替换,原数组被丢弃)

int[] a={10,20,31,40,50};

a=Array.copyOf(a.a.length+2);

新数组a={102030405000}

System.out.println(Arrays.toString(arr));输出数组arr

day06

 

数组的排序

冒泡排序

for(int i=0;i<arr.length-1;i++){

for(int j=0;j<arr.length-i-1;j++){

if(arr[j]>arr[j+1]){

int t=arr[j];

arr[j]=arr[j+1];

arr[j+1]=t;

********Arrays.sort(arr)//调用系统API排序算法。升序。方法封装了*****

如何将数组打乱,洗牌算法。

for(int i=(arr.length-1);i>=1;i--){

j=(int)(Math.random()*i);

int t=arr[i];

arr[i]=arr[j];

arr[j]=t;

方法:

方法用于封装一段特定的逻辑功能

方法可以在程序中反复被调用

方法可减少代码重复,便于程序的维护

 

              修饰词

public   static    int       sum  (int num1,int num2){ //方法体}

                              返回值类型   方法名       参数列表

 

方法只能定义在类中

不能定义在方法中

不能定义在类的外部

方法中不能定义方法

如果方法声明了返回值,就一定使用return语句返回和int类型兼容数据

方法中可有多个return语句,方法执行到某个return语句时候结束

一般情况下方法不会执行两个return语句

方法的主要三要素:方法名,参数列表,返回值

方法名:一般按照方法实现的功能定名

参数列表:是方法的前提条件,是方法执行依据,是数据

方法返回值:功能执行的结果,方法必须定义放回值,并且方法中,必须使用return语句返回数据,如果无返回值则定义为void此时return语句可写可不屑,返回结果

只能有一个,若返回多个结果,要用数组返回。

局部变量:在方法中声明的变量称为局部变量。

注意:1,变量的作用域:局部变量,和方法参数的作用域都是在当前语句块有效,离开语句块就消费(从栈中清除)

  2,不同作用域的变量,即使重名也不是同一个变量

无返回值 无参数方法

public static void sayHello(){

System.out.println("Hi,你好!");

}

调用方法:在main方法中输入sayHello();调用

void 表示方法无返回值,()表示无参数方法,

定义方法时候:无参数方法必须使用()

无返回值必须:使用void

    有参数返回

    public static void sayHelloTo(String somebody){

System.out.println(somebody+"你好!");

}

调用方法:在main方法中用sayHelloTo老王);调用。

 

 

为啥要定义方法:

1,封装一个可以重复的计算模块

2,当软件中出现一个独立的功能模块时候就将他封装为方法。

当一段代码能完成一个功能的时候,可以将其封装为方法

功能:就是能够用一个动词描述的代码块

方法=动词

3,优点:可以使代码模块化,功能化

提高维护性(可读性) 工程化

4,如何实现方法

    in.nextLine().toUpperCase();此方法可将控制台接收的字符串转换为大写字母

 equals用于比较字符串是否一样

    input=in.toCharArray();//将字符串in中的字符转换为char数组。“ABCDE”-->char[]{A,B,C,D,E}

随机生成不重复的字母

设计数据:

1)随机生成i=[0,26)

2)检查used[i]是否是true,也就是字符是否被用过

3)如果用过返回1

4i一定是没有使用过的

   answer[index]=chs[i]

   index++

   used[i]=true

   index==5时满了结束

   5)返回1

char[]     chs={'A','B','C','D','E','F','G','H','I'}

boolean[] used={ F,  F,  F,  F,  F,  F,  F,  F,  F,}

//used用过=假,表示26个字母都是没有被使用过的,如果抽取出以后改成true就表示这个字母用过了

char[] answer={B,H,D}

//设计数据,i表示抽取位置=[026)

index=0表示answer的填充位置,不断加1

 

 

二进制基础

 

计算机科学之父:图灵

二进制基础(8, 4, 2, 1

1,什么是二进制

便宜,制造成本便宜

 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

   0    1   2    3    4     5   6     7    8    9   10   11   12   13   14   15    

   *******************在计算机中只有二进制*************

   2,为啥要使用2进制

32进制在哪里

4,进制的计算规则

补码:最便宜的方式实现了负数计算。

补码优点:在范围内据算没问题

补码缺点:不能超范围计算

52进制计算在开发中的应用

2048 1024 512 256, 128 64 32 16 8 4 2 1

550 0010 0010 0110

int中最大的2进制数0111 1111 1111 1111 1111 1111 1111 1111

int中最小的2进制数1000 0000 0000 0000 0000 0000 0000 0000

2进制

1,数字01

2,规则逢21

3,权128 64 32 ,16 8 4 2 1 

  2 的幂

10进制

数字 0 1 2 3 4 5 6 7 8 9

规则:逢10 1

权:1000 100 10 1

   10的幂

 

16进制:

2进制的简写

将每42进制简写为一个16进制数

161

数字:“09 af”

权 256 16 1

4116=4*16+1=6510

4a16=4*16+10=7410

int i=0xffffffff; //-1

计算机颜色

R         G         B

       8位数       8位数        8位数

     白  11111111     11111111     11111111  

      ff       ff        ff

                                             

       int color=0xffffffff;表示白色

       int color=0xff000000;红色

       int color=0xffff00;   

       

       int max=Integer.MAX_VALUE;

int min=Integer.MIN_VALUE;

System.out.println(Integer.toBinaryString(max));//0111 1111 1111 1111 1111 1111 1111 1111

System.out.println(Integer.toBinaryString(min));//1000 0000 0000 0000 0000 0000 0000 0000

int r=255/2;

System.out.println(r);//10进制  127

System.out.println(Integer.toBinaryString(r));//二进制  1111111

System.out.println(Integer.toHexString(r));//16进制    7f

(50%的红)r=127(10)    01111111(2)       7f(16)

       c=01111111   00000000   00000000

             c=0x7f         00         00

            

            255/2     = 01111111(2)

            255/2<<16 =01111111 00000000 00000000

            255/2<<8  =         01111111 00000000

            255/2     =                  01111111

            

 -----------------------------------------------------------

          01111111  011111111 01111111

     将38位数拼接为一个24位的通用算法

     r=255/2

     g=255/2

     b=255/2

     color =(

     

     将48位数拼接为一个32位的通用算法

     b1

     b2

     b3

     b4

     int i=(b1<<24)+(b2<<16)+(b3<<8)+b4

     

  为了整理数据:

  32位数据int a

  a拆分为48位数据--传送->   接收放:将48位数拼接为int数据

                                               

      <<:左移位运算:经典的将byte数据合并

      >>:右移位运算:将intlong等数据进行拆分

      

  计算机中数据管理单位是8byte 文件IO都是8位为单元的处理

  电脑~~>硬盘:将数据拆分为byte数据才能写到文件:称为序列化”        String拆分为byte数据才能写到文件,称为编码

  硬盘~~>电脑:将数据byte合并为我们需要的数据,称为  反序列化”      将数据byte合并为我们需要的String,称为  解码

      字符串的编码和解码有API完成

      编码方式:称为编码方案,有很多种。egGBK,GB2312 UTF-8,UTF-16BE...

      编码规则和解码规则必须要一致,否则乱码

      

 文字编码规则

      GBK编码规则

      A,变长编码12字节

      英文1字节,中文2字节

      eg“ABC中国”->{byte*7}

      B,支持的文字数量:中文+英文20000+

      C,中国本地最优编码

      UTF-8编码规则

      A变长编码14字节

      英文1字节,中文3字节

eg“ABC中国”->{byte*9}

B,支持文字数量:100000+

英文 中 日 韩 希伯来 阿拉伯......等地球上所有的

C,国际化最优编码

解码:byte*n-->String

乱码:编码和解码时候的编码方案不一致

 

 

进制转换(2048 1024 512 256, 128 64 32 16 8 4 2 1

2进制到 10进制

0010 0110   2^5+2^2+2^1=64+4+2=70

10进制到 2进制

70  70-64=8  8-6=2  2-2=0   6462所在2进制权的位置 0010 0110

2进制到 16进制(8 4 2 1)  42进制可以缩写为一个16进制

0010 0110 1101  2

  2  6  e  16

总结:

1,计算机内部只有2进制

22进制可以计数

3,补码:完成负数计算的

优点:能够处理负数问题,满足数字计算规则

缺点:有溢出计算问题,使用更大范围的补码,避免溢出问题

4,计算机利用API()算法解决人类使用10进制,计算机使用2进制

   Integer.parseInt()10进制字符串转2进制

   Intege.toString()2进制转换为10进制字符串输出

5,如何直接书写2进制:使用16进制

16进制是2进制的缩写(简写)形式,规则:42进制可以缩写为一个16进制

是计算机专业人员书写2进制的方法习惯,

eg:计算机颜色处理,2进制处理 常用16进制形式书写颜色值 red=0xff0000

62进制的计算:进行数据的拆分和合并的计算

int red=255/2,green=255/2,blue=255/2;

int color =(red<<16)+(green<<8)+blue;

new Color(cor);

new Color(red,green,blue);

7,何时使用数据的拆分和合并

将数据写出到文件时(互联网,硬盘),要拆分。称为序列化

从文件(互联网,硬盘)读取数据需要合并。称为反序列化

String的拆分(序列化)称为编码String的合并称为解码

编码,解码的方式称为编码方案egGBK,GB2312 UTF-8,UTF-16BE...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值