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 |中文编码表
2的1次幂, 2进制, 2的3次幂 8进制, 2的4次幂16进制 --- 位数越来越短,方便表现数据
04进制的转换
10转2,除2取余数
2转10,从低位到高位: 2的0次幂× 0|1 + 2的1次幂* 0|1 + …+ 2的n次幂× 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其实就是6的2进制取反加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 double)2字符型(char) 3布尔型 (boolean)
引用数据类型: 1类(class) 2接口(interface) 3数组 (【】)
整数之所以有4个类型是因为他们在内存中开辟的空间是不同的
Byte 1字节 -128 - 127 -2(7) - +2(7)-1
最小单位
Short 2字节 -32768 - +32767
Int 4字节(32个2进制位)
最常用的
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是整型,而b是byte型,会损失精度。 要强转
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×2的n次幂 = 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进制的时候,
就是在获取32位2进制中的每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,则给y值100,否则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类
采用Scannerd的next()方法读取,测试代码如下:
- Scanner sc=new Scanner(System.in);
- System.out.println("waiting inputchar:");
- String n=sc.next();
- System.out.println(n);
当然记得在上面引入相关包:
- import java.util.Scanner;
2.采用BufferedReader类取得用户输入
BufferedReader类是java.IO.Reader的子类
实例代码如下:
- //采用 BufferedReader取得用户输入
- //BufferedReader接收的是java.io.reader类的实例
- //这里我们可以用java.IO.InputStreamReader
- //使用流操作的时候记得加上异常处理,不然会报错误
- try
- {
- BufferedReader bt=new BufferedReader(new InputStreamReader(System.in));
- String s=bt.readLine();
- System.out.println(s);
- }
- catch(java.io.IOException ex)
- {
- System.out.println(ex.getMessage());
- }
这里要加上try..catch()异常处理块,不然会报以下异常信息:
- Exception in thread "main" java.lang.Error: Unresolved compilation problem:
- Unhandled exception type IOException
tring -> int
s="12345";
int i;
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();
- Java基础02天 学习笔记
- java基础学习笔记02
- Java学习笔记02 Java语法基础
- java基础学习笔记
- java基础学习笔记
- java基础学习笔记
- java基础学习笔记
- JAVA 基础学习笔记
- Java基础学习笔记
- java 基础学习笔记
- Java基础学习笔记
- 学习笔记-JAVA基础
- java基础学习笔记
- java基础学习笔记
- Java学习基础笔记
- 学习笔记-Java基础
- Java基础学习笔记。
- java 学习笔记基础
- Subsets Java
- Segment Tree with Lazy
- 输出并解析C++的调用堆栈 -rdynamic ******************
- UVA - 11021 Tribles (递推+概率)
- tomcat配置JNDI数据源
- Java基础02天 学习笔记
- Adobe Photoshop CS6 for Mac 简体中文 支持retina高清屏
- Subsets II Java
- Vim常用技巧总结2
- Oracle系列:重装系统之后 Oracle 数据库的恢复的方法
- android浏览器启动APK
- glClearColor炒用
- 0829多线程
- freenas搭建nas及san网络存储详解