Java基础02天 学习笔记

来源:互联网 发布:淘宝怎么看行业分析 编辑:程序博客网 时间:2024/06/06 00:22

01标识符


关键字:就是被Java赋予了特殊含义的单词,不让用~

注释: // /*   */   文档:/**  */(Java特有)

 

标识符:在程序中自定义的一些名称。

26字母 , 0-9 , _ $

规则:数字不能开头 , 不可以使用关键字

Demo1 可以 , 1Demo不行

 

Java严格需分大小写。



类名接口名: 多单词的每个首字母大写!!

变量和函数名 : 驼峰原则


02变量

常量:不能改变的数值。

布尔型常量 True false判断用

字符常量 字母数字符号 

4整数 4’字符常量

ab’是错的,单引号中只有一个字符

ab”可以,是字符串常量

“”空内容的字符串~也是字符串

Null空常量。(用于引用数据类型)

 

Java中整数有四种表现形式

十进制, 8进制,16进制A-F

10进一,8进一,满16进一

 23                        023      0x23


03进制的特点


星期:7月份 12

电信号: | 两个状态, 1 | 0 通过开关的组合,来表示数据->二进制

 

字节 8个“开关组成的” 8个二进制位代表一个字节。

   0110-0010

表示数据其实就是一个映射关系编码表 ASCII |中文编码表

21次幂 2进制, 23次幂 8进制 24次幂16进制   --- 位数越来越短,方便表现数据


04进制的转换

1022取余数

210从低位到高位 20次幂× 0|1 + 21次幂* 0|1 + …+ 2n次幂× 0|1

 

IP地址的每一段都是用字节来表示的,每一段只能取到255



05其他的进制转换

2- 164位一算,然后换算成16进制 0x

0101-1010

 5    10

 5    A

 0x5A

 

同理,8进制是用每3位一取


06负数2进制

6=110

-6 = ?

-6其实就是62进制取反加1

110取反 --- 一个整数占用4个字节,所以在内存中是这样的

0000-0000  0000-0000  0000-0000 0000-0110

1111-1111  1111-1111 1111-1111 1111-1001 (取反)

1111-1111  1111-1111 1111-11111111-1010   (加1

结论,负数的最高位都是1


07变量

就是将不确定的数据进行存储。

在内存中开辟一个空间,把值存入。

 

先声明(给空间个名字),后使用

变量:需要变量名 +数据类型 +数据

 

数据类型  两大类

基本数据类型 1数值 byte , short , int ,long ,float double2字符型(char) 3布尔型 (boolean)

引用数据类型 1类(class  2接口(interface 3数组 【】

   

整数之所以有4个类型是因为他们在内存中开辟的空间是不同的

 

Byte  1字节 -128 - 127   -27 - +27-1

  最小单位 

Short 2字节    -32768 - +32767

 

Int  4字节322进制位)    

  最常用的

Long(天文数字~)

 

 

 

变量的定义:

数据类型 变量名 =初始化值

 

如果存储时,空间不够,装不下,会损失精度。

 

 

小数默认的数据类型是double

 

Float f = 2.3 ;//这个会报错

float f = 2.3f ;这个就不会报错,因为有F表示是单精度的

 

Char ch = '4'

char类型占2个字节的空间。

同一个区间中不能定义同名的变量。

 

Booleanbo = true ;

Booleanbo1 = false ;

 

关键是什么时候定义变量:当数据不确定的时候,需要对数据进行存储时,就定义一个变量完成存储动作。




08类型转换

 

Byte b =2,

B = b +3 ;  //这一步是自动类型提升!

会报错,因为2是整型,而bbyte型,会损失精度。 要强转 

 

B = (byte)(b + 2)  //这个是强制类型转换

 

 

Int float做运算,结果是float

 

 

a + 1 // a 97但是a’是2个字节, 1 是整型,是4个字节,需要将'a'类型提升

 

(Char)(a+2 )  // 数据类型提升加强制数据类型转换

 

1字符1对应的ASCII表的值是49

System.out.println('1'+0);

 

Char是可以运算的,因为在ASCII中都有对应的值


09算术运算符

 

运算符算术运算符赋值运算符比较运算符逻辑运算符,位运算符,三元运算符

 

 

Int  x = 4333 ;

X = x/1000*1000;

打印x  // 4333/1000=4.333但是2个都是int,所以结果还是int 4333/1000=4× 1000 = 4000

5%2=1 取余数。

 

Int a  , b =3 ;  //a没有值,而b的初始值是3

a= b++  //   a =3 , b=4 ,   b++含义是, b = b + 1 

a=++b// ++b优先于赋值运算执行。

 

+可以是字符串连接符haha+"hehe"

 

"ab"+5 +5   ,打印出来是 ab55

5+5=+5+5  == 5+5=55  //字符串中的东西会原样的打印,string + int,这里的+是字符串链接符

"5+5="+(5+5) ==> 5+5=10 //()中的东西会优先的执行

 

"a="+a+",b="+b 打印出来的东西更易懂 // 哪部分是固定的就放在“”中,变化的放在外边。


010转义字符

Print ,不换行

Println,此语句完成后换行。

转义字符:通过 \来转变后面字母或者符号的意义

 

\n

换行

\b

退格

\r

回车win

\r\n

回车 win

\t

制表, tab

 

中文每个是两个字节,char类型也是两个字节,没问题


011赋值,比较运算符

 

+=  -+ *=    /=     %=

 

Short s =4;

S = s+ 5;  //损失精度 5int编译失败   这个是两次运算

 

s+=5 //这个是可以的          编译通过

这个是一次运算,会有一个自动转换动作

 

Int a, b,c ;

A = b = c = 5 ; //同时给abc赋值

 

比较运算

 

== 是否向= , 比较返回真或者假


012逻辑运算符

 

&

位与

 

|

位或

 

^

亦或

同对同错为假,一对一错位真

!

 

    &&

短路与

条件1为假,条件2不执行

    ||

短路或

条件1为真,条件2不执行


013 014 位运算符

<<

左移

3<<2 , 3左移两位

变大                       3×2n次幂 = 3 × 4 =12

>>

右移

6>>2,6向右移两位

变小                       6/4 = 1.5   = 1  (小数位舍弃)

>>>

无符号右移

 

无论最好位是什么都用0

~

反码

 

 


6 & 3   //需要先转换为2进制

  110

 011

----

010 = 2

对于每一位来做& | , ^的运算,然后返回那个二进制的数

 

 

7^ x ^ x =7 //一个数亦或同一个数两次,结果还是那个数。密码锁~


015 016 位运算练习

做乘除时,其实用位运算最高效。

2×8 - 2<<3   

n=3 , m=8 ;n , m值互换

 

n= n^m ;      //原理就是 被同一个值亦或两次值不变。

m=n^m;    //n^m^m , 右边是原来n的值

n=n^m;   //n^m^(n^m^m) , 右面是原来m的值




在求一个数的16进制的时候,

就是在获取322进制中的每4位,

4位如何获取??

Int a = xxx

比如想拿一个2进制的最低4位,就是拿最低4位有效位中的1 -->只需要&下, 1111 原数右移4位,再与,以此类推

最低4 a & 15

次第4 (a>>4)&15

再次第4 : (a>>4>>4) &15

….

 

Num =60 ;

Num & 15 = 12  //最低4

Temp = num >>> 4  //次第4    ,保正是正数。

Temp& 15 = 3

 

0 - 9  A B C D E F

              10 11 12

12-10 --- 2 +A ---- (char)(2+'A')

 

三元运算符:

Int x=3 ,y;

Y = (x>1)?100:300; //x的值大于1,则给y100否则300

y=x>2? 'a':'b' //最后y是个数字,而不是a,或者b



017流程控制, IF

If(x>1)

System.out.println("yes"); //注意代码的缩进,最好加括号吧

System.out.println("yes");

 

If else简写可以

变量 =条件表达式表达式1表达式2

相当与一个三元运算符,但是不同的是,三元运算符必须要有一个返回值。

 

If (){} 

Else if() {}       

Else if() {}

Else      虽然行数多,但是是单条语句。


019 switch语句和练习

Switchcase break default

 

Case取值,

执行语句

 

Switch (x)备选的表达式的值,

{

 

 

Case 4:

System.out.println("a");

Break;

Case 6:

System.out.println("b");

Break;

Case 2:

System.out.println("c");

Break;

Default:

 

 

 

}

 

 

只接受4种类型的值:byte , short ,int , char 7.0可以判断字符串

switch中语句中可以没有顺序,但是Default会最后读。

switch结束 break最后一个大括号




由于没有匹配的项,在读default时也没有break,则程序会继续向下读,且不判断case,直到遇到break或者最后的大括号。

 

最后的语句为 d  , a , b

 

Case 3:

Case 4:

Case 5 :

   xxxxx

Break;

3,4,5对应同一个答案

==============================================================


在练习中扩展的东西

需求1根据用户定义的数值不同,打印对应的星期

想用到数组

 

需求2根据用户输入的月份,打印该月份的季节

 

/**

JerryJava

需求1根据用户定义的数值不同,打印对应的星期

 

需求2根据用户输入的月份,打印该月份的季节

 

 

*/

 

 

class Res1

{

publicstatic void main(String[] args)

{

System.out.println("HelloWorld!");

intx;

x=3;

 

//调试了3遍才通过,

//第一次 int[] arr结尾没有加;

//第二次 int[] arr数组的数据类型就定义错了,改成了String[]

//第三次string数组赋值出错了,原来是arr = "星期1,星期2,星期日"

//其实应该是arr ={"","","",…,""}的格式,用大括号


String[] arr= {"星期1","星期2","星期3","星期4","星期5","星期6","星期7"};

for(int i=1;i<8 ;i++ )

{

if(x==i)

{

System.out.println("今天是"+arr[i]);

}

}

}

}

 

加入了 Scanner后有了交互,改进了下






扩展的东西

 

1.采用java.util.Scanner

采用Scannerdnext()方法读取,测试代码如下:

  1. Scanner sc=new Scanner(System.in);  
  2. System.out.println("waiting inputchar:");  
  3. String n=sc.next();  
  4. System.out.println(n);  

 

当然记得在上面引入相关包:

  1. import java.util.Scanner;  

 

2.采用BufferedReader类取得用户输入

BufferedReader类是java.IO.Reader的子类

实例代码如下:

  1. //采用 BufferedReader取得用户输入  
  2. //BufferedReader接收的是java.io.reader类的实例  
  3. //这里我们可以用java.IO.InputStreamReader  
  1.           
  1. //使用流操作的时候记得加上异常处理,不然会报错误  
  1. try  
  1. {  
  2. BufferedReader bt=new BufferedReader(new InputStreamReader(System.in));  
  3. String s=bt.readLine();  
  4. System.out.println(s);  
  5. }  
  1. catch(java.io.IOException ex)   
  1. {  
  2. System.out.println(ex.getMessage());  
  3. }  

 

这里要加上try..catch()异常处理块,不然会报以下异常信息:

  1. Exception in thread "main" java.lang.Error: Unresolved compilation problem:   
  2. Unhandled exception type IOException  

 

 

 

tring -> int

s="12345";

int i;

第一种方法:i=Integer.parseInt(s);

第二种方法:i=Integer.valueOf(s).intValue();



0 0