一、 课前复习
1. 软件 : 系统软件 应用软件
人机交互方式: 图形化界面方式 命令行方式
2. path环境变量
path:windows 操作系统执行命令时,需要搜寻路径
编写第一个java程序
我们写的java程序都是以.java结尾的称为源文件。一个源文件中可以声明一个活着
多个类
class Helloword{
publicstatic void main(String[]args){
}
}
3. [注意点]
java源文件以.java为扩展名。源文件的基本组成为.class类
一个源文件中只能有一个public类。其他类的个数不限,如果源文件中包含一个public类,则文件名必须按该类命名
java语言严格区分大小写。
java方法有一条一条语句构成每个语句以;结束
大括号成对出现
4. 注释
单行注释://
多行注释:/* */
文档注释:/** */
5. 关键字:被java语言赋予特殊含义的字符串。单词。class public void intr short
6. 保留字
7. 标识符:凡是可以自己明明的地方:类名,变量名,包名
8. 命名规则:
Java 对各种变量
、方法和类等要素命名时使用的字
符序列称为标识符 凡是自己可以起名字
的地方都叫标识符。 定义合法标识符规则:
由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头。 不可以使用关键字和保留字,
但能包含关键字和保留字。Java中严格区分大小写,
长度无限制。 标识符不能包含空格。注意:在起名字时,
为了提高阅读性,要尽量有意义,“见名知意”。
9. 命名规范
Java中的名称命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz 类名、
接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 变量名、
方法名:多单词组成时,第一个单词首字母小写,
第二个单词开始每个单词首字母大写:xxxYyyZzz
10. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
11. 变量
12. 分类:
基本数据类型:
数值型
整数类型 byte1字节 short2字节 int4字节 long8字节
浮点类型 float4字节 double8字节
字符型
布尔型
引用数据类型 Stringstr1="javaEE"
类
接口
数组
数据类型转换
有多种类型的数据混合运算时,
系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串
二、 第二课
//String 可以与基本数据类型做运算,但是仅限于+结果为String类型
class Text{
Stringstr1="javaEE";
inti1=10;
Stringstr2=str1+i1;
System.out.println("str2:"+str2);
System.out.println("str1:"str1);
System.out.println('*'+'\t'+'*');//93
System.out.println("*"+"\t"+"*");
System.out.println("*"+'\t'+'*');//""+''链接
}
练习
String str1 = 4; //判断对错:错
String str2 = 3.5f + “”; //判断str2对错:对System.out.println(str2); //输出:3.5
System.out .println(3+4+“Hello!”); //输出:7Hello
System.out.println(“Hello!”+3+4); //输出:Hello!34
System.out.println(‘a’+1+“Hello!”); //输出:98Hello!
System.out.println(“Hello”+‘a’+1); //输出: Helloa1
public class Text5{
public static void main(String []args){
//Stringstr1=4;
Stringstr2=3.5f+"";
System.out.println(str2);
System.out.println(3+4+"Hello!");
System.out.println("Hello!+3+4");
System.out.println('a'+1+"Hello");
System.out.println("Hello"+'a'+1);
Strings0="hello";
Strings1=new String ("hello");
Strings2="he"+"lo";
System.out.println(s0==s1);
System.out.println(s0==s2);
shorts=5;
//s=s-2;
bytebb=3;
//b=b+4;
bb=(byte)(bb+4);
charc='a';
inti=5;
doubled=.314;
byteb=5;
shortss=3;
intt=ss+b;
}
}
String
值null可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。
String类属于引用类型,可用null赋值。
String类是一个典型的不可变类,String对象创建出来就
不可能被改变。创建出的字符串将存放在数据区,保证
每个字符串常量只有一个,不会产生多个副本。
String s0 = “hello”;
String s1 = “hello”;
String s2 = “he” + “llo”;
System.out.println(s0 ==s1);
System.out.println(s0 ==s2);
进制
对于整数,有四种表示方式:
二进制:0,1 ,满2进1.以0b或0B开头。
十进制:0-9 ,满10进1. 八进制:0-7 ,
满8进1. 以数字0开头表示。
十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
如:0x21AF +1= 0X21B0
底层的整数都以补码的形式存储
对于正数来说。原码,反码,补码,3码合一
对于负数来讲。。原码,反码(除了符号位外所有原码位置值取反),补码(反码加1)
Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;
当是long类型时,二进制默认占64位,第64位是符号位
八进制与二进制的转换对于整数,有四种表示方式:二进制:0,1 ,满2进1.以0b或0B开头。十进制:0-9 ,满10进1. 八进制:0-7 ,满8进1. 以数字0开头表示。十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。 如:0x21AF +1= 0X21B0
2-->8 将二进制的每隔三位为一组转换为十进制作为八进制的一位
运算符
1) 算术运算符
2) 赋值运算符
3) 比较运算符
4) (关系运算符)
5) 逻辑运算符
6) 位运算符
7) 三元运算符
1.算数运算符
*/
public class Text3{
publicstatic void main(String []args){
int i1=10;
int i2=10/2;
int i3=12;
int i4=i3/2;
System.out.println("i2:"+i2);//5
System.out.println("i4:"+i4);//2
double d1=i3/5;
System.out.println("d1:"+d1);
int a=1230;
int b=a/1000;//1;
int c=12/5*5;
System.out.println("b:"+b);
System.out.println("c:"+c);
int j1=12;
int j2=j1%5;
System.out.println("j2:"+j2);//2
j1=12;
j2=j1%-5;
System.out.println("j2:"+j2);//2
j1=-12;
j2=j1%5;
System.out.println("j2:"+j2);//-2
j1=-12;
j2=j1%-5;
System.out.println("j2:"+j2);//-2
//结果与被模数一直
int m1=10;
int m2=m1++;
System.out.println("m1:"+m1);//11
System.out.println("m2:"+m2);//10
m1=10;
m2=++m1;
System.out.println("m1:"+m1);//11
System.out.println("m2:"+m2);//11
//前++ 先加一后赋值
//后++ 先赋值后++
m1=10;
m2=--m1;
System.out.println("m1:"+m1);//9
System.out.println("m2:"+m2);//9
m1=10;
m2=m1--;
System.out.println("m1:"+m1);//9
System.out.println("m2:"+m2);//10
short s1=10;
s1=(short)(s1+1);
s1++;//数据类型没变
System.out.println("s1:"+s1);
}
}
1.如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
2.对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x=3510;x=x/1000*1000; x的结果是?
3.“+”除字符串相加功能外,还能把非字符串转换成字符串.例如:System.out.println("5+5="+5+5);//打印结果是
2.自加运算符
int m1=10;
int m2=m1++;
System.out.println("m1:"+m1);//11
System.out.println("m2:"+m2);//10
m1=10;
m2=++m1;
System.out.println("m1:"+m1);//11
System.out.println("m2:"+m2);//11
//前++ 先加一后赋值
//后++ 先赋值后++
m1=10;
m2=--m1;
System.out.println("m1:"+m1);//9
System.out.println("m2:"+m2);//9
m1=10;
m2=m1--;
System.out.println("m1:"+m1);//9
System.out.println("m2:"+m2);//10
short s1=10;
s1=(short)(s1+1);
s1++;//数据类型没变
System.out.println("s1:"+s1);
3.赋值运算符
public class Text4{
publicstatic void main(String[]args){
int i1=10;
//i1=i1+5;
i1+=5;//i1=i1+5;
double d=15;
d*=0.2;//d=d*0.2;
System.out.println("i1:"+i1);
System.out.println("d:"+d);
short s=10;
s+=2;//s=s+2;
System.out.println("s:"+s);
int i=1;
i*=0.1;
System.out.println(i);//0
i++;
System.out.println(i);//1
}
}
short s = 3;
s=s+2; ① s+=2; ②
①和②有什么区别?
s+=2; 会出错!s=s+2;没问题
4.比较运算符
class Text6{
publicstatic void main(String[] args){
boolean b=false;
System.out.println("Hello"instanceof String);
if(b=true){
System.out.println("今天下雨了");
}else{
System.out.println("今天没下雨");
}
int i=1;
if(i>-4 && i<2){
System.out.println("今天下雨了");
}else{
System.out.println("今天没下雨了");
}
}
}
&—逻辑与 | —逻辑或 !—逻辑非&& —短路与 || —短路或 ^ —逻辑异或
逻辑运算符
a b a&b a|b !a a^b a&&b a||b
true true T T F F T T
true false F T F T F T
false true F T T T F T
false false F F T F F F
/*
5.逻辑运算符
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
&与&&的区别和用法
*/
class Text7{
publicstatic void main(String[] args){
boolean b1=true;
boolean b2=false;
System.out.println(b1 & b2);
System.out.println(b1 && b2);
System.out.println(b1 | b2);
System.out.println(b1 || b2);
System.out.println(b1 ^ b2);
System.out.println(!b1);
//当符号左端为假时程序会继续执行符号又短的
int i1=10;
if(b2 & i1++>0){//全部判断完
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("i1:"+i1);
int i2=10;
if(b2 && i2++>0){//短路判断
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("i2:"+i2);
if (b2 & 10/0 >2){
System.out.println("HiHi");
}
//| and ||的区别
int j1=10;
if(b1 | j1++>0){
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("j1="+j1);
int j2=10;
if(b1 || j2++>0){
System.out.println("条件为真");
}else{
System.out.println("条件为假");
}
System.out.println("j2="+j2);
}
}
例题1:
class Text11{
public static void main(String[] args){
intx=1;
inty=1;
if(x++==2& ++y==2){
x=7;
}
System.out.println("x="+x+",y="+y);//2/2
x=1;y=1;
if(x++==2&& ++y==2){
x=7;
}
System.out.println("x="+x+",y="+y);//2/1
x=1;y=1;
if(x++==1|++y==1) {
x=7;
}
System.out.println("x="+x+",y="+y);//7/2
x=1;y=1;
if(x++==1||++y==1){
x=7;
}
System.out.println("x="+x+",y="+y);//7/1
}
}
6.位运算符
6.1<<左移运算符
/*
位运算符: <<>> >>> & | ^ ~
*/
class Text8{
publicstatic void main(String[] args){
int a=31;
int b=a<<2;
System.out.println(b);//124 =31*4
System.out.println(2<<3);//16
System.out.println(31<<28);//-26843546
}
}
6.2>> >>>右移
a=-31;
b=a>>2;
System.out.println(b);
b=a>>>2;
System.out.println(b);
6.3位运算
6.4~取反
7.实例1:(交换位置)
class Text9{
publicstatic void main(String[] args)
{
int m=12;
int n=5;
System.out.println("m:"+m+"n,"+n);
int temp =m;
m=n;
n=temp;
System.out.println("m:"+m+"n,"+n);
m=m+n;//m=17;
n=m-n;//12=17-5
m=m-n;//5=17-12
System.out.println("m:"+m+"n,"+n);
m=m^n;
n=m^n;
m=m^n;
System.out.println("m:"+m+"n,"+n);
}
}
8.三元运算符
/*
三元运算符
(条件表达式)?表达式1 :表达式2
返回一个结果
结果的数据类型取决于表达式1.表达式2的数据类型
两个表达式的数据类型要一直
*/
class Text10{
publicstatic void main(String[] args)
{
int i=20;
int j=20;
//取出最大值
String max=(i>j)?"i大":(i==j)?"相等":"j大";
System.out.println(max);
}
}
三元运算符的格式:
(条件表达式)?表达式1:表达式2;
为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句
class Text12{
publicstatic void main(String[] args)
{
//4,2,1
int a=13;
int b=12;
int c=5;
int max=0;
max=(a>b?(a>c?a:c):(b>c?b:c));
System.out.println("max="+max);
}
}
10.程序流程控制
顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。
有if…else和switch两种分支语句。
循环结构
根据循环条件,重复性的执行某段代码。
有while、do…while、for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素
if-else语句应用举例
class Text13{
publicstatic void main(String[] args){
int i=10;
int j=i+2;
System.out.println(j);//12
/*System.out.println(n);
int m=10;
int n=10;*/
//条件判断
int age=20;
if(age<=18){
System.out.println("你好未成年");
}else{
System.out.println("已经成人了,可以看成人电影了");
}
if(age<12){
System.out.println("必须在父母的看护下");
}else if(age<22){
System.out.println("可以谈恋爱,不可结婚");
}else if(age<35){
System.out.println("可以结婚了,com on");
}else{
System.out.println("啊啊啊");
}
int i=10;
int j=23;
int max=0;
if(i>j){
max=i;
}else{
max=j;
}
System.out.println("max="+max);
//三元运算符与选择结构可以互相转换
//在有返回值的情况下
}
}
例题1:
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。
import java.util.*;
class Text15{
//如何从键盘输入
/*
1.导入java.util.Scanner类
*/
publicstatic void main(String[] args){
Scanner s=new Scanner(System.in);
//调用方法,获取信息
//String a=s.next();
//4.操作
//System.out.println(a);
int score=s.nextInt();
if(score==100){
System.out.println("奖励一个BOMA");
}else if(score>80 &&score<=90){
System.out.println("奖励一个IPone");
}elseif(score>=60&&score<=80){
System.out.println("奖励一个参考书");
}
else{
System.out.println("什么都没有");
}
}
}
例题2:
/*
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,
当然要提出一定的条件:
高:180cm以上;
富:财富1千万以上;
帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/
import java.util.*;
class Text17{
publicstatic void main(String[] args){
boolean a=false;
boolean b=false;
boolean c=false;
System.out.println("输入:高:180 Y/N");
a=new String ((newScanner(System.in).next())).equals("Y");
System.out.println("输入:富: 100000 Y/N");
b=new String ((newScanner(System.in).next())).equals("Y");
System.out.println("输入:帅: Y/N");
c=new String ((newScanner(System.in).next())).equals("Y");
if(a&&b&&c){
System.out.println("我一定要嫁给他!!!");
}else if(a|b|c){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁!");
}
}
}