Java基础02天 学习笔记

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 进制的转换

102 2取余数

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

 

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



05 其他的进制转换

2- 16 4位一算,然后换算成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;  //损失精度 5 int 编译失败    这个是两次运算

 

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();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值