今天开始学习Java,看的是[毕向东_Java基础视频教程].因为没有书,将笔记写写在博客上可以备忘和记录学习里程。同时希望通过写博客的形式可以让自己学习Java更有动力。
01day
1.Java跨平台性
Java的跨平台性的主要原因是因为java虚拟机(JVM)的存在。
2.JRE和JDK
JRE是Java运行环境,全拼是(Java Runtime Environment),JRE包括Java虚拟机和运行Java程序所需要的核心库。想要运行一个java程序,在计算机上安装JRE就可以了。
JDK是Java开发工具包,全拼是(Java Development Kit),JDK是提供给Java开发人员使用的。其中包括了开发Java程序的所用工具,还包括JRE。
3.doc系统命令
cd 进入路径 cd..返回上层目录 cd\ 返回盘符
dir 列出当前目录 md 创建文件夹 kd 删除文件夹
4.JDK环境变量配置
//JDK安装路径 JAVA_HOME C:\Java\jdk1.7.0_51 CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
5.hello world
class Demo
{
static void main(String [] args)
{
System.out.println("Hello World");
}
}
在命令行中通过javac编译后,然后 java Demo.class 就可以在doc控制台上打印一个Hello Wrld 了。
02day
1.Java关键字
Java关键字是被Java语言赋予特殊含义的单词。
2.标识符
标识符就是在程序中自定义的名称,这些名称由字母、数字和符号组成。标识符需要符合两个规则: 1.数字不可以在开头 2.不可以使用关键字
在起名字时,为了提高代码的可阅读性,名字要尽量有意义。
3.代码注释
// 注释一行
/*
注释多行
*/
4.常量和变量
常量就是不能改变的数值。在Java中常量包括整数常量、小数常量、布尔型常量、字符串常量、null常量。
变量:就是将不确定的数据进行存储,也就是在内存中开辟一个空间存储数据。
变量的定义:
数据类型 变量名 = 初始化值; eg. int i = 0;
什么时候定义变量? 当数据不确定,需要对数据进行存储的时候就定义一个变量用来完成存储。
在Java中数据类型包括:基本数据类型(byte、short、int、long、float、double、char、boolean)和引用数据类型(class、interface、[](数组))
int x=4;
byte b =2 //-128~127
short s = 30000; //3W+
long l = 4l;
float f = 2.3f;
double d = 24.46;
char ch = '4';
boolean bo = true;
5.类型转换
class D2Byte
{
public static void main(String[] args)
{
byte b = 4;
//b = b + 5;
b += 5;
System.out.println(b);
//b= b + 5; 编译不通过,这里是先经行加法然后赋值,相加以后会默认转化为int型。赋值的时候int型不能给byte型赋值。
//b += 5; 编译通过,这里+=运算符会默认进行强制转换。
}
}
6.字符串拼接
class StringDemo
{
public static void main(String[] args)
{
string a = "LiMing";
int b = 23;
System.out.println("hello, "+a+" you age is"+b+".");
}
}
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。上面的程序运行后会打印出: hello, LiMing you age is 23.
7.转义字符:(通过\ 来转变后面字符或者符号的含义)。
\n :换行。
\b : 退格。
\r :按下回车键。
\t : 制表符。
8.赋值运算符
+= -= *= /= %=
9.逻辑运算符
逻辑运算符用于连接Boolean类型的表达式
& 与:&可以看成是数字0,在判断的时候只要出现0就是false
| 或:|可以看成是数字1,在判断的时候只要出现1就是true
^ 异或:总结起来就是,同假异真。
! 非:非就是取反,取反表达式后假就是真,真就是假
&& 逻辑与:判定跟&差不多。区别就是 当使用&&的时候,左边出现false后立即得出判断结果(逻辑短路), &&右边的表达式不会进行判断而使用 & 两边的表达式都参与运算。
|| 逻辑或:判定跟|差不多。 区别就是 当使用||的时候,左边出现true后立即得出判断结果(逻辑短路), ||右边的表达式不会进行判断而使用 | 两边的表达式都参与运算。
10.位运算符(位运算是直接对二进制数就行运算)
<<:左移 eg. 3<<2 = 12 --> 3*2*2 =12 左移就是乘以2的移动位数次幂
3的二进制表现形式:0000-0000-0000-0011 -->左移2位补位后就是00-0000-0000-0011--> 0000-0000-0000-1100=12
>>:右移 eg. 3>>1 =1 --> 3/2 = 1 右移就是除以2的移动位数次幂
3的二进制表现形式:0000-0000-0000-0011 -->右移1位补位后就是00000-0000-0000-001--> 0000-0000-0000-0001=1
>>>:无符号右移 eg. 3>>>1 = 1 --> 3/2 = 1
>>:右移后,最高位补位由原来的数据的最高位而定。如果最高位位0,则右移后用0补位,如果最高位为1,则右移后用1补位
>>>:无论最高位是什么,右移后用0补位
&与运算 eg. 6 & 3 = 2
0000-0000-0000-0110 & 0000-0000-0000-0011 ----------------------- 0000-0000-0000-0010 = 2
| 或运算 eg. 6 | 3 = 7
0000-0000-0000-0110 | 0000-0000-0000-0011 ---------------------------- 0000-0000-0000-0111 = 7
^异或运算 eg. 6 ^ 3 = 5
0000-0000-0000-0110 ^ 0000-0000-0000-0011 ---------------------------- 0000-0000-0000-0101 = 5
^异或的应用: 7^4^4=7 一个数异或同一个数两次还是那个数。
应用1:用于加密
应用2: 不借助第三方两个变量进行互
class D2nTom
{
public static void main(String[] args)
{
/*
不借助第三方两个变量进行互换
*/
int a = 10 ,b =50;
System.out.println("不借助第三方两个变量进行互换前: a= " +a +", b= "+b);
//方法一
a= a+b;
b= a-b;
a= a-b;
System.out.println("不借助第三方两个变量进行互换后: a= " +a +", b= "+b);
System.out.println("--------------------------------------------------");
/*
方法二
*/
System.out.println("不借助第三方两个变量进行互换前: a= " +a +", b= "+b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("不借助第三方两个变量进行互换后: a= " +a +", b= "+b);
}
}
~反码 eg. ~6 = -7
~ 0000-0000-0000-0110---->所有位取反
-----------------------------
1111-1111-1111-1001 ---> 先减一再取反的出整数
- 0000-0000-0000-0001 --->减一
----------------------------
1111-1111-1111-1000 --->取反
----------------------------
1000-0000-0000-0111 =-7
10.条件运算符
(条件表达式)? 表达式1:表达式2
如果条件表达式的结果为true则执行表达式1的内容,如果条件表达式的结果为false则执行表达式2的内容。
int a=10,b;
b=(a>8)? 100:200;
/*三目运算符:
好处:可以简化 if else 代码
弊端: 因为是运算时,所以运算完必须由一个结果。
*/
11.判断结构
//if语句:有三种形式
1.if(条件表达式)
{
执行语句;
}
2.if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
3if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
...
...
...
else
{
执行语句;
}
12.选择结构-switch语句
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
case 取值3:
执行语句;
break;
...
...
...
case 取值n:
执行语句;
break;
default:
执行语句;
break;
}
/*
switch的特点
1.switch语句选择的类型只有四种: byte,short,int,char.
2.case与default之间没有顺序。先执行第一个case,直到没有匹配的case后执行default。
3.结束switch语句的两种情况,遇到break或执行到switch语句结束。
4.如果匹配的case或者default没有对应的break,那么程序会继续向下执行。运行可以执行的语句,直到遇到break或者说switch结尾后结束。
if和switch语句功能相似,具体情况怎么选择呢?
如果判断的具体数值不多,而且符合 byte short int char 这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效果稍高。
其他情况,对区间判断,结果为boolean类型判断,则使用if,if的范围更广泛。
*/