我的java日记(基础上)
来源:互联网 发布:腾讯模拟炒股软件 编辑:程序博客网 时间:2024/05/16 06:57
我认为人生的意义在于不断的学习和进步,也只有这样才能实现自己事业和感情上的理想.
这几天通过从黑马网站上下载下来的视频,让我学到了很多的东西.下面是我这几天学到的,
也是让我以后更上一层楼的基础.
1:常用的dos命令
cls:清屏
md:创建文件夹 md abc 创建一个名为abc的文件夹
rd:删除文件夹
del:删除文件
cd..:退回到上一级目录
cd\:退回到根目录
exit:退出dos命令
time:更改当前时间
copy c:\abc\a.txt c:\abc\b.txt 把a中的内容复制到b中去
2:JAVA 语言历史
James Gosling -->java之父(高司令)
1995 5 23日发布了java1.0
3:J2SE(Java 2 Platform Standard Edition) 标准版
J2EE(Java 2 Platform Enterprise Edition) 企业版,主要针对于Web应用程序开发.
J2ME(Java 2 Platform Micro Edition) 小型版
4:Java程序的特点:
跨平台性:一次编译,处处运行.(通过JVM)
5:JDK中包含JRE, JRE中包含了JVM.
JDK用于开发, JRE运行
jre--->java 程序的运行环境
jdk--->java程序的开发工具包
jre+java development Tools=jdk
6:配置环境变量
path(系统变量):让系统通过path路径找到运行的文件.
classpath(用户变量):是针对于当前用户的.
配置classpath时如果加分号:首先查找classpath下的类文件,如果该文件不存在, 在查找当前目录下是否有该类文件.
配置配置classpath时如果不加分号,只查找classpath下的类文件, 如果该文件不存在,会出现错误信息.
jdk1.5之后不需要配置classpath.
classpath配置上必须以.;开头
7:用在dos中set命令配置临时环境变量
set 查看当前所有的环境变量配置信息.
set 名称=值 临时设置配置项信息
set 名称= 清空指定项
set 名称=值;%名称% 在path中加入值
8:JAVA_Home把jdk根目录变化的部分通过java_home确定下来.
9: .java文件通过javac.exe进行编译成.class 文件(二进制字节码文件),.class文件通过java.exe解释运行处结果.
10:源文件:后缀名是.java的文件
class 是一个关键字,用来声明一个类.
main 方法是程序的入口
11:标准输出语句:
System.out.println("双引号内的内容原样输出");
注意:
*java语言严格区分大小写.
*在程序中使用的符号要在英文状态下.
12:java中的名称规范:
包名: 多个单词组成时所有字母都小写
类名接口名: 多个单词组成时,所有单词的首字母大写,采用驼峰标识符
变量名和方法名: 多单词时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
常量名: 所有字母都大写, 多单词时每隔单词用下划线连接.
13://单行注释
/*多行注释*/
/**文档注释*/
14:标识符:由数字,字母,下划线,美元符号组成,不能以数字开头,不能包含空格,长度无限制.
关键字:具有特定意义的标识符.
15:System.out.print("");不换行输出
System.out.println("");换行输出
16:常量:其值不可变的
字符常量:单引号括起来的单个字符
字符串常量:双引号括起来的字符串
17:整数的四种表现形式:
二进制: 0,1 ,满2进1.
八进制; 0-7 ,满8进1.
十进制: 0-9 ,满10进1. 以0开头表示
十六进制:0-9,A-F, 满16进1, 用0x开头表示.
18:8个位(bit)表示1个字节(byte).
3个二进制表示1个八进制.
4个二进制表示1个十六进制
19:十进制转二进制:
进行除2取余操作, 15--->1111 , 12--->1100
二进制转十进制:
进行乘2的幂数操作:1100-->0*2(0)+0*2(1)+1*2(2)+1*2(3)=12
也可以:1100方式
8421-->对应数为一的相加,即8+4=12
八进制,十六进制和十进制之间的转换通过转换成二进制过渡来转换.
java中的数据类型:基本数据类型和引用数据类型
20:变量
(1)概念:
*是内存中的一块存储区域.
*该区域有自己的名称(变量名)和类型(数据类型)
*该区域的数据可以在同一类型范围内不断变化.
(2)为什么要定义变量:
用来不断的存放同一类型的常量,并可以重复使用.
(3)整数类型{byte(1byte=8bit能表示256个byte类型,-128-127),
short(在内存中占2个byte,表示65535个short类型),
int(占4个byte,可以表示2的32次方个int数),
long(占8个byte,2的64次方个数,long型数据后要加上L)},默认类型是int,默认值是0
浮点类型{float(以f结尾,占4个byte),double(占8个byte2*10(-308)-2*10(307))},默认类型是double
字符类型(char,在内存中占2个byte,能表示0-65536之间的字符),一个汉字也是一个字符,所以也是占2个byte.
布尔类型(boolean-->true,false),默认值是false
21:数据类型转换原则
自动类型转换(隐式类型转换):占内存小的向占内存大的转换.
强制类型转换:占内存大的向占内存小的转换.(会损失精度,要慎用)
例:int i=10;
byte b=(byte)i;
精度从高到低: double float long int short(char) byte
22:运算符:
(1)算术运算符:-(负),,++(自增),--(自减),+(加),-(减),*(乘),/(除),%(模)
优先级:*,/,% > +(加),-(减)
注意:如果两个数做运算要注意运算结果不要超出类型界限
如果两个运算数数据类型一致,则结果数据类型也一致
如果两个运算数数据类型不一致,则结果数据类型与精度高的一致
*对于byte,short,char 在做运算时会先将其转换成int再参与运算.
例:byte b1=1; byte b2=2; byte b3=(byte)(b1+b2);
如果在%(模)运算时结果的正负只与被除数有关.如果左边数小于右边数,则结果就是左边数(即被除数).
++a:a先自加1再参与运算,a++:先参与运算后a自加1.
--a:a先自减1再参与运算,a--:先参与运算后a自减1
(2):赋值运算符 =,+=,-=,*=,/=
+=等简化运算符在参与运算时在其内部会完成一个类型强制转换.效率比较高.即a+=10效率比a=a+10效率高
short a=10; a=a+10;System.out.println(a);//此段程序会出错
short a=10; a+=10; System.out.println(a);//能通过编译,不会出错.
(3):连接符+,从左到有看
System.out.println(2+2+"2");//结果是42
System.out.println("2"+2+2);//结果是"222"
System.out.println(2+"2"+2);//结果是222
(4):关系运算符:==,!=,>,<,>=,<=,instanceof(检查是否是类的对象)
运算结果是boolean型,true或false.
对于>,>=,<,<=只能操作数字
==,!=可以操作任何类型数据.
(5):逻辑运算符:&(与),|(或),^(异或),!(非),&&(简洁与,只能操作布尔值),||(简洁或,只能操作布尔值)
操作的是布尔类型变量
与操作:两个都为真才为真,否则为假. &即可操作布尔值也可操作数,&&只能操作布尔值
或操作:两个都为假时为假,否则为真. |即可操作布尔值也可操作数,||只能操作布尔值
异或操作:^两侧一样时为假,不一样为真. 一个数异或另一个数两次还是这个数即6^5^5=6;
非操作:非假为真,非真为假.
&&操作:如果&&前的为false,则&&后面的不被运算.可能出现短路,,但是&&的运算效率比&效率高
||操作:如果||前的为true,则||后面的不被运算.可能出现短路
(6):位运算符:操作二进制(1为真,0为假)
<<(左移),>>(右移),>>>(无符号右移),&(位与),|(位或),^(),~(反码)
~:0变成1,1变成0.负数表示形式是正数取反加1.正数反码是其本身.
>>:相当于乘以2的n次幂(n是移动的位数). 最高位为符号位,1为负,0为正
<<:相当于每次除以2,如果高位是0用0补,如果高位是1用1补.
>>>:被移时无论高位是1还是0,都补0.
反码:
正数:和源码相同
负数:符号位不变,其余位取反.
补码:
正数:和源码相同
负数:反码+1
(7):三目运算符(必须得到boolean值)?(值[表达式]):(值[表达式])
结果:如果第一个表达式(boolean)为真,那么结果为第二个表达式的值.
如果第一个表达式(boolean)为假,那么结果是第三个表达式的值.
例:通过三目运算符求两个数中的最大值.
int a=10;
int b=20;
int c=(a>b)?a:c;
23:java中关于流程控制语句的分类:
(1)顺序语句
(2)条件语句(分支语句)
(3)循环语句
24:条件语句 if...else
(1):if(条件boolean值){
执行语句;
} //如果条件成立执行语句.
(2):if(条件){
语句1;
}else{
语句2;
} //如果条件成立执行语句1,如果条件不成立执行语句2.
(3):多层嵌套:
if(条件){
if(条件){
语句1;
}
}else if(条件){
语句2;
}else{
语句3;
}
if应用的场景:
A:对有限的值进行判断,但是
25:选择结构:switch(值) case
switch(值)只能是byte,short,char,int,String(jdk1.7版本以后的可以) 数据类型.
如果switch(值)与case后面的值匹配,那么就会执行该case后面的语句.如果都没有则会执行default后的语句.
break:switch语句结束.
if和switch的区别:
switch语句可以被if语句替换,而switch不可以替换if语句.
switch可以操作一个确定的值,而不可以操作以个区间的值.
switch在特定的情况下效率比if的效率高.
例:
class Demo1 //switch(值) case 语句的使用.
{
public static void main(String[] args)
{
switch(2){
case 1:System.out.println("星期一");break;
case 2:System.out.println("星期二");break;
case 3:System.out.println("星期三");break;
case 4:System.out.println("星期四");break;
case 5:System.out.println("星期五");break;
case 6:System.out.println("星期六");break;
case 7:System.out.println("星期日");break;
default:System.out.println("请输入一个1-7的数");break; //缺省值,如果没有和2匹配的则执行此语句.
}
}
}
26:while(条件){
语句
}
执行时先判断条件是否成立,如果为true,执行语句;
注意:要对条件进行改变,否则会出现死循环.
27:do-while
do{
语句
}while(条件)
首先执行语句,再判断条件.
while和do-while语句的区别:
条件如果不成立,while不会有执行结果,而do-while的循环体至少会执行一次.
28:for循环
for(表达式1;表达式2;表达式3){循环体};
表达式1:为初始化变量,只执行一次.
表达式2:循环是否可以执行的条件.
表达式3:对循环变量的改变.
for循环中的表达式可以缺少,但是分号不能缺少.
循环:对条件进行多次判断时使用循环,
while:声明的循环变量在使用后,需要继续使用,建议使用while循环.
for:当循环变量胡紫薇递增存在时,建议使用for循环.
例:
class Demo1 //for语句打印1-100以内所有被3与7整除的数,并统计个数
{
public static void main(String[] args)
{
int i=0; //定义计数器,用于存储1-100内可以被3与7同时整除的数的个数
System.out.println("1-100内所有能被3和7同时整除的数是:");
for(int j=1;j<=100;j++){
if((j%3)==0&&(j%7)==0){
i++; //统计个数
System.out.print(j+" ");
}
}
System.out.println("\n一共有:"+i+"可以同时被3和7整除的数");
}
}
应用场景:
变量和语句的引用场景
(1)什么时候使用变量?
当使用的数据是不确定的时候,需要定义变量来存储数据。
(2)什么时候使用if语句?
当需要判断的时候,就要使用if。
if语句的应用场景:
A:对有限的值进行判断。 但是一般这个时候推荐使用switch。
B:对结果是boolean类型的值进行判断。
C:对范围进行判断。
**对条件进行一次判断用if
**对条件进行多次判断用循环
(3)什么时候使用switch语句?
对有限的几个值进行选择用switch。而且它只能接收byte,short,char,int类型的值。
其他类型的值如果使用选择或者判断,用if。
(4)什么时候使用循环语句?
while:声明的循环变量在使用后,需要继续使用。
for:当循环变量只为递增存在时,建议使用for循环。
29:break :结束循环.
如果break单独出现,后面不可以有任何语句.
continue:中断当次循环
如果continue单独出现,后面不可以有任何语句.
30:函数(方法): 完成特定功能的代码块
(1)格式: 修饰符 返回值类型 方法名(参数类表){方法体}
(2)参数列表:接收外来数据,完成方法的功能.
实际参数;实际参与运算的数据.
形式参数:用于接收实际参数.
(3)返回值:如果一个方法有返回值,必须标注其返回值类型,方法的返回值类型可以是java中的任意类型. return 返回值,
不可以一次返回多个数值,如果不需要返回值,使用void.
(4)函数必须被调用,才执行.
(5)函数的重载
函数名相同,参数列表不同(数据类型和参数个数)
注意:方法之间不能嵌套.
(6)基本数据类型的传递,形参的改变对实参没有影响.
引用数据类型的传递,形参的改变直接影响实参.
31:数组
(1):数组:存储同一种数据类型的集合.也叫做容器.
好处(特点):可以自动给数组中的元素从0开始编号,方便操作这些元素.
(2):格式:
(1)元素类型[] 数组名=new 数组类型[元素个数或数组长度];
new:创建实例.
(2)元素类型[] 数组名=new 数组类型[]{元素,元素,.....};
元素类型[] 数组名={元素,元素,....};
如果元素确定,就用后两种,如果不确定就用第一种定义格式.
(3):数组操作的常见的问题:
ArrayIndexOutOfBoundsException:越界异常
NullPointerException:空指针异常
(4):数组的常见操作:数组的操作离不开索引.
(1)利用循环遍历数组元素. 数组名.length可以得到数组的长度.
(2)获取最值.首先找一个参照物,让每个数组中的元素和这个参照物进行比较,通过循环遍历可以实现,
当比较完毕后,最值就留下来了.
32:java中的内存机制:
栈:
栈内存的特点:存储的是局部变量(定义在函数内的变量).
局部变量被使用完毕后,就会自动释放空间.
堆:通过new创建的实体都会在堆内存中.
堆内存的特点:每个实体都有首地址值.
每个实体的数据都有初始值
整型的默认值是0,浮点型的默认值是0.0,布尔型的默认值是false,字符型的默认值是'\u0000' 空字符
当实体不在被使用,也就是栈内存没有引用执行它的时候,就会被视为垃圾.会在jvm空闲的时候,启动垃圾回收机制进行回收.
方法区
本地方法区: 是windows调用的系统资源.
寄存器: 是给CPU使用的.
- 我的java日记(基础上)
- 我的Java日记
- 我的java培训日记
- 我的java日记(多线程)
- 我的Java日记--Char
- 我的JAVA日记 一
- 我的JAVA日记 二
- 我的JAVA日记 三
- 我的Java学习日记
- 我的java培训日记-2
- 我的java培训日记-3
- 我的java培训日记-4
- 我的java培训日记-1
- 我的java培训日记-1
- 我的java培训日记-1
- 我的java培训日记-2
- 我的java培训日记-3
- 我的java培训日记-4
- CSDN上的第一篇博客
- JavaScript函数补完:toString()
- oracle 数据导入 ——.bmp
- 鲁政委利率市场化应与金融市场深化协调推进 ,
- c#文件操作大全(二)
- 我的java日记(基础上)
- 《初恋爱》所教会我的那些
- JavaScript函数补完:sort()排序
- C++拷贝构造函数和赋值构造函数
- javascrpt的函数与括号
- 网关、路由器、DNS 等网络术语的通俗比喻
- SVN、GIT生成版本号
- C++的内存管理
- ioctl与内核通信