黑马程序员——java基础(2)

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

(变量)

变量的概念:

占据着内存中的某一个存储区域;

该区域有自己的名称(变量名)和类型(数据类型);

该区域的数据可以在同一类型范围内不断变化;

 

为什么要定义变量:

用来不断的存放同一类型的常量,并可以重复使用;

使用变量注意:

变量的作用范围初始化值

定义变量的格式:

数据类型    变量名  =  初始化值;

注:格式是固定的,记住格式,以不变应万变。

作用范围:定义开始到定义它的代码块结束;

同一范围内,不允许多个个局部变量命名冲突

 

Java成员变量和局部变量

局部变量:不是声明在类体括号里面的变量;

局部变量使用前必须初始化值;

局部变量没有默认初始化值;

局部变量的作用域是从定义开始到定义它的代码块结束;

 

成员变量:在方法体外,类体内声明的变量,又称字段(Field)或全局变量;(其实Java中没有全局变量,由于Java面向对象语言,所有变量都是类成员)

成员变量的作用域是整个类中;

我的总结:注意成员变量和局部变量的区别

 


package reviewDemo;

public class Demo2 {
 public static void main(String[] args) {
     int i;
       System.out.println(i);
   }
}

备注:局部变量调用前没有初始化,所以编译的时候就会报错!


package reviewDemo;

public class Demo2 {
  static int i;
    public static void main(String[] args) {
     System.out.println(i);
   }
}

备注:此时i为全局变量,未初始化会被赋予默认的初始化值!程序正确!

 

我的总结:

局部变量是定义在方法中的变量,,,出了该方法就不能访问该变量了....
成员变量是在类中定义,,,,并且在类的成员方法中都能访问的变量..



13基本数据类型

在数据类型中,最常用也是最基础的数据类型,被称作基本数据类型。可以使用这些类型的值来代表一些简单的状态。

Java 语言的基本数据类型总共有以下种,下面是按照用途划分出的个类别: 

 

 

定点类型:
整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从种类型中挑选合适的,如果没有特殊要求的话,一般选择int 类型。种整数型区别主要在每个数据在内存中占用的空间大小和代表的数值的范围。

 

 

浮点类型:
小数型是一类代表小数值的类型。当需要代表一个小数的值时,可以根据需要从以下种类型中挑选合适的。如果没有特殊要求,一般选择double类型。
由于小数的存储方式和整数不同,所以小数都有一定的精度,所以在计算机中运算时不够精确。根据精度和存储区间的不同,设计了两种小数类型。

 

 

字符型:
字符型代表特定的某个字符,按照前面介绍的知识,计算机中都是以字符集的形式来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算机完成从编号转换成对应字符的工作。Java 语言中为了更加方便国际化,使用Unicode 字符集作为默认的字符集,该字符集包含各种语言中常见的字符。在程序代码中,字符使用一对单引号加上需要表达的字符来标识,例
如’A’、’a’等,当然也可以直接使用字符编码,也就是一个非负整数进行表示。

 

 

 

布尔型:
布尔型代表逻辑中的成立和不成立。Java 语言中使用关键字true 代表成立,false 代表不成立。布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,Java 把逻辑的值用布尔型来进行表达。

 

 

基本数据类型转换之向上转型和向下转换

向上转换:

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byteshortchar之间不会相互转换,他们在计算时首先会转换为int类型。

boolean 类型是不可以转换为其他基本数据类型。

Eg

int i = 123;

long l = i; //自动转换,不需强转

float f = 3.14F;

double d = f;

 

向下转换:

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byteshortchar之间不会相互转换,他们在计算时首先会转换为int类型。

boolean 类型是不可以转换为其他基本数据类型。

Eg

long l = 123L;

int i = (int) l;//必须强转

double d = 3.14;

float f = (float) d;

 

我的总结:类型转化

小转大,自动!自动类型转换(也叫隐式类型转换)  

大转小,强转!强制类型转换(也叫显式类型转换) 

 

15Java的运算符

运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种: 

 

算术运算符(、— 、* 、/ 、%)

赋值运算符(+=-=*=/=,%=

关系运算符(>>=、<、<=、!=)

条件运算符(&&||、!&、|、^)

位运算符(&、|、^、~、>>、<<、<<<、>>>)

 

我的总结:

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 

&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

“ ”与“|”不同之处是:当左右都为true时,"^"结果为false

 

表达式和三目运算符

是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;

a + b

3.14 + a

(x + y) * z + 100

boolean b= i < 10 && (i%10 != 0)

表达式的类型和值:

对表达式中操作数进行运算得到的结果是表达式的值。

表达式值的数据类型即为表达式的类型。

表达式的运算顺序

应按照运算符的优先级从高到低的顺序进行;

优先级相同的运算符按照事先约定的结合方向进行;

 

 

“三目运算符”,语法格式:

x ? y : z;

其中xboolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。

 

package reviewDemo;

 

public class Demo2 {

public static void main(String[] args) {

String  s = "lz";

s = (s == "lz" ? "正确" : "错误");

System.out.println(s);

}

}

输出:正确

 

程序流程控制

顺序结构

分支结构(条件结构)

循环结构

控制循环结构

 

顺序结构:

如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。

 

if语句:

基本语法:if(表达式){方法体}else if(表达式){方法体}else(方法体)

几种形式:

三种格式:

if(条件表达式){执行语句;}

if(条件表达式){执行语句;}else{执行语句;}

if(条件表达式){执行语句;}else if (条件表达式){执行语句;}……else{执行语句;}

 

public class If3 

{

public static void main(String args[])

{

int i = 3;

if (i > 5)

{

System.out.println("变量i大于5");

}

else if (i > 4)

{

System.out.println("变量i小于4");

}

else

{

System.out.println("其他");

}

}

}

 

switch控制语句

格式:

switch(表达式)

{

case 表达式可能的结果值1:

执行语句;

break

case 表达式可能的结果值2:

执行语句;

break

...

default:

执行语句;

break//最后这个一般不写

}

备注:

case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default

结束switch语句的两种情况:遇到breakswitch语句执行结束。

如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。

class switch2 

{

public static void main(String[] args) 

{

int a = 7,b = 5;

switch(a-b)

{

case 3://表达式可能的值;

{

System.out.println("33!");

}

break;

 

case 4:

{

System.out.println("44!");

}

break;

default://都没有执行则 执行该语句!

System.out.println("其它的");

 

}

}

}

 

三大循环结构:

用于处理需要重复执行的操作;

根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;

while:事先不需要知道循环执行多少次;

do  while:同上,只是至少要执行一次(先做,后判断)

for:需要知道循环次数;

 

循环结构(while & do while)

while语句

格式:

while(条件表达式值为true)

{

执行语句;

}

 

do while语句

格式:

do

{

执行语句;

}

while(条件表达式值为true);

 

我的总结:do while特点是无论条件是否满足,循环体至少被执行一次。

循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false;

 

循环结构(for)

格式:

for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3)

{

执行语句;(4

}

执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)

 

备注:

1, for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

2, whilefor可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

3, 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

 

Eg

用三种循环控制求出100以内前53的倍数的数字;

 

class while

{

public static void main(String[] args) 

{

int i = 1,k = 0;

while(i<=100)

{

if(i%3==0)

{

if(k<5)

System.out.println(i);

k++;

}

i++;

}

}

}

 

class dowhile

{

public static void main(String[] args) 

{

int i = 1,k = 0;

do{

if(i%3==0)

{

if(k<5)

System.out.println(i);

k++;

}

i++;

}

while(i<=100);

}

}

 

class for

{

public static void main(String[] args) 

{

int i = 1,k = 0;

for(;i<100;i++)

{

if(i%3==0&&k<5)

{

System.out.println(i);

k++;

}

}

}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值