-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
什么是软件开发?
软件:一系列按照特定顺序组织的计算机数据和指令的集合。
软件的出现实现了人与计算机的更好交互。
图形化界面:这种方法简单直观。使用者易于接受。容易上手操作
命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦。需要记住一些命令。
常用的命令有:
dir:列出当前目录下的文件及文件夹。
md:创建目录。
rd:删除目录。
cd :进入指定目录。
cd..:退回到上一级目录;
cd\:退回到跟目录。
del:删除文件。
exit:退出dos命令行。
cls:清屏。
早期的电脑常常用到dos命令行,因为需要记住很多命令,不利于普及。
后期出现了图形化界面,通过鼠标点击里面的形状,就可以完成操作。其实吧这些命令封装到图像化界面便于操作。
如果人要和计算机交流,那么久要 学习计算机语言。计算机的语言有很多种,我现在主要学习的是java语言。
机器语言:机器语言是直接用二进制代码指令来表示的机器语言。指令是用0和1组成的。它们有一定的位数,并分成若干段,各段的编码表示不同的含义。
高级语言:用英语编写的源代码,通过编译器将源代码翻译成机器语言。在有计算机执行。
java语言的概述
java之父--------------詹姆斯.高斯林。是SUN(Stanford University Network)斯坦福大学网络公司,1995年推出的一门高级编程语言。
是一种面向Internet的编程语言。
随着java技术web方面的不断成熟,已经成为web应用程序的首先开发语言。
是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
java语言的三种技术架构。
J2EE企业版:是为了开发企业环境下的应用提供的一套解决方案。该技术体系主要在web应用程序的开发。
J2SE标准版:是为了开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
J2ME小型版:是为了解决电子消费类产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品如机。
jvm:是java的虚拟机,用于保证java的跨平台性,注释:java语言是跨平台的,jvm不是跨平台的,
如果想要运行一个开发好的java程序,只需安装一个java虚拟机就可以了。
jre:是java的运行环境,jre;java的虚拟机和java的核心类库。
jdk:是java的开发工具,jdk:java的开发工具包和jre;
在我们下载javase软件是,我们只需要下载jdk就可以了,因为java的开发工具包,都是用java编写的应用程序,没有java虚拟机是运行不了的所以jdk里面含有一个jre.
java的官方网站 新版网址:www.oracle.com 老版的网址:www.sun.com
在安装jdk是需要注意的是:安装路径不要有中文或者特殊符号如空格等。安装完jdk后,提示安装jre时,需要就安装,不需要就可以不安装。
环境变量path和环境变量Classpath的作用是什么有什么不同?
环境变量path是用于给可执行文件配置路径的。
环境变量classpath是用于给类文件配置路径的。
在我们配置环境变量classpath时,值得结尾处加上;。那么java虚拟机在classpath路径下没有找到指定的类文件,会在当前目录下在查找一次。set classpath=c:\;d:\;
值得结尾处没有加;.那么java虚拟机会在classpath路径下没有找到指定的类文件,不在当前目录下查找,即使当前目录下有也不会执行。set classpath=c:\;d:\
建议:配置classpath环境变量时,值的结尾处不要添加;,如果需要访问当前目录可以.表示。Set classpath=.;c:\;d:\
标识符:
1.就是给类变量,方法起名字。
2.组成规则:
有数组0-9,英文字母大小写$以及_组成。
3.注意事项:
1.只能有组成规则规定的内容组成。
2.不能以数组开头。
3.不能是java的关键字。
4.严重区分大小写。
1.包(文件夹,用于区分同名类)com是一级包。
包名全部小写。如果是多级包,用.分隔开。
类和接口:
如果是一个单词组成:首字母大写,如:Demo,Test,Student.
如果是多个单词组成,每个单词首字母大写。如:HelloWorld,SutdyJava
变量和方法:
如果是一个单词,首字母小写。列如:main();age,show(),nethod();
如果是多个单词组成,从第二个单词开始每个单词的首字母大写。如:showName();StdentName();
注释:就是对程序的解释性文字。
单行注释:以//开头,以回车符结束。单行注释可以嵌套单行注释。
多行注释:是以/*开头,以*/结尾。多行注释不可以嵌套多行注释,但可以嵌套单行注释。
文本注释:是以/**开头,以*/结尾。将来被javadoc工具解析,生成一个说明书。
注释的作用:解释程序,提供程序的阅读性。可以调式程序。
所以的关键字都小写。关键字被赋予了特殊的含义。
进制转换:
二进制,由0,1组成。
八进制,有0-7组成。
十进制,有0-9组成。默认是十进制。
十六进制,由0-9,A-F组成,一ox开头。
十进制-------------/2--------->二进制。
System.out.println(Integer.toBinaryString(6));//我想知道6的二进制是多少 6=110;
二进制---*2----->十进制 原理就是*2的过程。
其他进制转换
转成十六进制 四个二进制就是个十六进制。列如:5+4=9=1001;
转成八进制 三个二进制代表一位。如:001011010 =132
负数的二进制表现形式,负数的最高位是1,整数的最高位是0;
6=110
-6:其实就是6的二进制取反+1;取反将二进制的1变成0,0变成1
6=0000-0000 0000-0000 0000-0000 0000-0110
取反=1111-1111 1111-11111 1111-1111 1111-1001
+ 0000-0000 0000-0000 0000-0000 0000-0001
1111-1111 1111-1111 1111-1111 1111- 1010=-6
常量和变量:
常量:作用于整个类,在程序运行时候是不可以发生变化的。
变量:就是将不确定的数据进行存储,于就是在内存中开辟一个空间。
(1):程序运行过程中是可以发生改变的。
格式1:数据类型 变量名 = 初始化值。
格式2:数据类型 变量名;变量名 = 初始化值。
数据类型
java语言是强类型语言,对于每一种数据都定义了明确的数据类型。在内存中分配类不同的内存空间。
数据类型:4类8种。占用字节
整数类型:Byte(1量)short(2量)int(4量)long(8量)
布尔型:Boolean 不确定可以认为是1个字节,只有两个结果,一个是true,另一个是false.
字符型:Char(2量);
浮点型:Float单精度(4量) Double双精度(8量)
注意:整数类型默认为int类型。long类型需要加L和这l后缀。
浮点型默认为double类型。float类型需要加F或者f后缀。
类型转换:
1.boolean 类型不参与转换。因为boolean的值是个常量。要么是true 要么false。
2.隐式的转换(从小到大)
(byte,short,char)-->int-->long-->float-->double
3.强制转换(从大到小)
int b ;b=(byte)(b+2)
格式:
数据类型
表达式的数据类型自动提升。
所有的byte型、short型和char类型的值都将被提升到int型。
如果一个long类型的,计算结果就是long类型。
如果一个数值是float型,计算结果就是float型。
如果一个数值是double类型,计算结果就是double型。
Char类型是可以参与运算的。
变量什么时候定义?
当数据不确定时,需要对数据进行存储时,就定义一个变量来完成存储动作。
转义字符:
\n\r在windows系统里面是换行。
\b是退格
\t制表符。
运算符:
1.就是把常量和变量用符号连接起来,一般参与运算使用。
2.算数运算符:+,-,/,*,%,++,--
+)正号:加法,字符串连接符
System.out.println(“5+5=”+5+5);//5+5=55
System.out.println(5+5+“=5+5”);//10=5+5
%)
左边如果大于右边,结果是余数。
左边如果小于右边,结果是左边。
左边如果等于右边,结果是0.
正负号跟左边一致。
++与--:
++其实相当于把数值+1
--其实相当于把数值-1
参与运算:
如果在数据的后边,数据先操作,在++/--,Byte b=3,y; y=b++ 表示b先出去给y赋值,在回来b+1.y=3,b=4同理
如果在数据的前边,数据先++/--,在操作。Byte b=3,y; y=++b 表示b+1在出去给y赋值,在回家.y=4,b=4同理
赋值运算符=,+=,-=,*=,/=,%=
Int a=10;
把10赋值给int类型的变量a.
a+=20;//a=30
把左右两边的和赋值和a.
因为+=这种运算符,内含有强制类型转换。
比如:
short s1=2;
S1+=3;
相当于s1=(short)(s1+3);
关系运算符:==,!=,(大于)>,>=,(小于)<,<=
特点:关系运算符的结构都是boolean 类型
逻辑运算符:
&:与运算符,|:或运算符,!:非运算符,&&:短路与运算符,||:短路或运算符
&:符号的运算特点:
true & true = true; 真 & 真 = 真
true & false = false; 真 & 假 = 假
false & true = false; 假 & 真 = 假
false & false = false; 假 & 假 = 假
&:与运算规律:
&:与运算符的两边只要有一个是false,结果肯定是false。
只有两边都为true,结果才是true。
|:或符号的运算特点:
true | true = true; 全为真,则为真
true | false = true; 一真一假,则为真
false | true = true;
false | false = false; 全为假,则为假
|:或运算规律:
|:或运算的两边只要有一个是true,结果肯定是true。
只有两边都为false。结果是false。
^:异或 :和或有点不一样。
^:运算特点。
true ^ true = false; 全为真,则为假
true ^ false = true; 一真一假,则为真
false ^ true = true;
false ^ false = false; 全为假,则为假
^异或的运算规律:
如果两边结果相同,结果是 false。
两边的结果不同,结果是true。
!:非运算符,判断事物的另一面。
!true =false
!false=true;
!!true=true;
面试题:
&&和&运算的结果是一样的。但是运算过程有点小区别。
&:无论左边的运算结果是什么,右边都参与运算。
&&:当左边为false时,右边不参与运
||和|运算的结果是一样的。但是运算过程有点小区别。
|:无论左边的运算结果是什么,右边都参与运算。
||:当左边为true时,右边不参与运算的。
位运算符是直接对二进制进行运算
<<左移运算 >>右移运算 >>>无符号右移运算 &与运算 |或运算 ^异或运算 ~反码运算
<<左移几位其实就是该数据乘以2的几次方。左移:可以完成2的次幂运算
>>右移几位其实就是该数据除以2的几次幂。右移:对于高位出现的空位,原来高位是什么就用什么补这个空位。
>>>:无符号右移:数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
^一个数异或同一个数两次,结果还是这个数。
练习:
对两个整数变量的值进行互换(不需要第三方变量)
开发时,
第一种:使用第三方变量的形式,因为阅读性强。
int a = 3,b = 5;
Int temp ;
Temp=a;
a=b;
b=temp;
Sytem.out.println("a="+a+",b="+b);输出前a=3;b=5建立第三方变量后输出a=5;b=3
第二种方法:
这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换。数据会丢失精度。
a= a + b;//a = 3 + 5;a = 8;
b= a - b;//3+5-5 = 3;b = 3;
a= a - b;//3+5-3 = 5;a = 5;
第三种:技巧法
面试的时候用。
a= a ^ b;//a = 3 ^ 5;
b= a ^ b;//b = (3^5)^5; b = 3;
a= a ^ b;//a = (3^5)^3; a = 5;
三元运算符
格式:(条件表达式)?表达式1:表达式2 ;
如果条件为true,运算后的结果是表达式1,
如果条件为flase,运算后的结果是表达式2
三元运算符必须有结果。
示例:获取两个数中大数。
int x = 3, y = 4, z;
z = (x>y) ? x:y; //z变量存储的就是两个数的大数。
演示1:三元运算符
要求:1.我想知道60的最低四位是多少,通过三元运算符怎样代码
1.我还想知道60右移四位是多少
步骤:
1.获取60的最低四位,通过&15,
2.获取下一个四位,将60右移四位,通过无符号右移
Class operateDemo1
{
Public static void main(String[] args)
{
int num=60;
n1=num&15;
System.out. println(n1>9?(char)(n1-10+‘A’):n1);//输出结果是67.
//需要获取下一组四位,将60右移4位。
Int temp=60>>>4;
// 对temp的值进行最低四位的获取。
int n1=temp&15;
System.out. println(n2>9?(char)(n1-10+‘A’):n2);输出结果3
}
Short s; 这两个表达式有什么区别
S+=2;
S=s+2
S+=2;编译通过因为+=运算符在给s赋值时,自动完成了强制转换操作。
S=s+2;编译失败,因为s会被提升为int类型。运算结果还int类型。无法赋值给short类型。