黑马程序员之----------Java编程基础

来源:互联网 发布:java length 全角 编辑:程序博客网 时间:2024/05/16 10:39


 ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

   

                                     Java编程基础

一。简单介绍一下Java语言的特点。

 

1.简洁有效,严谨。

 

2。可移植性。跨平台。

 

3.面对对象。提高了程序的“可重用性”“封装性”“继承性”

 

4.是一门解释型的语言。Java解释器(运行系统)能直接运行目标代码指令。

 

5.适合分布计算。可凭借URL打开并访问网络上的对象

 

6.拥有较好的性能。

 

7.健壮,防患于未然的特性。Java致力于检查程序在编译和运行时的错误

 

8.具有多线程处理的能力。

 

9.较高的安全性。

 

JAVA去除了C语言的指针内容,这样就不能直接作用于 硬件,这对于计算机来说提高了安全性。

 

异常处理机制,程序可以在运行时,对发生的异常抛出异常信息,同时结束进程,避免系统陷入崩溃内存

 

自动回收和垃圾处理机制,避免了内存溢出

 

10.是一种动态语言。可简单,直观查询运行时的信息

 

11.是一种中性结构。 可生成一个与任何计算机提系统无关的“中性”字节码。

 

二。配置环境变量

 

新建->变量名:JAVA_HOME,变量值:D:\Java\jdk1.7.0_01 

 

编辑->变量名:Path,在变量值得最前面加上%JAVA_HOME%\jre\bin;

 

三。注释 

 

java中的注释按功能的不同,只要分为单行注释,多和注释和文档注释。

 

单行注释:int num=18; //定义一个整型 Java编译器会忽略这部分信息。 

 

多行注释:/*int x=17 ; 

 

int m=8; */

 

文档注释:/**内容会被解释成程序的正式文档,并包含在javadoc工具生成的文档中,用以说明该程序的层次结构和方法。*/

 

四。标识符

 

标识符可以由字母、数字和下划线(_)和美元符号($)组成。标识符的第一位必须是字母或者下划线,不能是数字,也不能是Java中的保留关键字。

 

五。变量和常量

 

变量:可以说是利用声明的方式把内存中的某个内存块留下来让程序使用。

变量可以分为:

1,局部变量,定义在方法或语句块内部,生命周期是从声明位置到"}"为止,并且局部变量在使用前必须先声明其类型和初始化(赋初值);

2,成员变量,又称实例变量,即定义在方法外部、类的内部的变量,从属于对象,生命周期伴随对象始终,如果不自行初始化,他会默认初始化;

3,静态变量,又称类变量,即被static修饰,用static定义,从属于类,生命周期伴随类始终,如果不自行初始化,默认初始化。

 

常量:就是一个固定的值,是不可改变的。 

 

六。八种基本数据类型和初始值

 

byte(字节) ( -128 - 127 )0 ---- shot(短整型) 0

 

int(整型) 0------------long(长整型) 0

 

float(浮点型) 0.0f-----------------double(双精度) 0.0d

 

char(字符型) ‘\u0000 ’-------boolean(布尔型) false

 

这里简单说一下byte。当 定义的变量值在 -128 - 127 之间,系统不会另开辟内存而是直接找到原有的值的内存地址。

 

Integer m=128;

 

Integer n=128;

 

System.out.println(m==n);

 

六。运算符

 

1,赋值运算

 

num=num+5;

 

2,一元运算

 

“+”正,“-”负,“!”否。 

 

3.算术运算

 

“+”加,“-”减,“*”乘,“/”除,“%”取余 

 

4.关系运算符。

 

等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、

 

小于等于(<=)

 

5.自增与自减运算符

 

++(自增,变量值加一) ,--(自减,变量值减一)  

6. 逻辑运算符

 

 

 

逻辑与(&&)、逻辑或(|| )、逻辑非(!)、逻辑异或(^)、逻辑与(&)、逻辑或(| )

 

A ---------B -----A&&B--- A ||B -----!A -----A^B ---A&B---- A| B

 

false---- false -----false -----false--- true ---false---- false---- false

 

true----- false -----false -----true ---false--- true----- false ----true

 

false -----true -----false -----true ----true ---true----- false---- true

 

true------ true----- true----- true---- false ---false----- true---- true 

  

7,例子: 

class OperateTest  { 

 public static void main(String[] args)   {   

//最有效率的方式算出2乘以8等于几? 

  

//  System.out.println(2<<3); //位运算  

 //  对两个整数变量的值进行互换 (不需要第三方变量)   int a = 3,b = 5; 

  System.out.println("a="+a+",b="+b);    /* 

  开发时,使用第三方变量的形式,因为阅读性强。   int c    c = a;   a = b;   b = c;   */ 

  

 

//这种方式不要用,如果两个整数的数值过大,会超出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;   */ 

  System.out.println("a="+a+",b="+b); 

 } 

注意:异或运算中,当一个数异或运算同一个数两次,结果还是这个数本身,如a^b^b=a

 

 

8.位运算符

 

运算符---------- 名称------------ 示例------------------ 说明 

 

&---------------- 位与 ----------x&y --------------把x和y按位求与

 

|------------------位或----------- x| y --------------把x和y按位求或

 

~ ------------位非(取反) -----~x ----------------把x按位求非

 

^ ----------------位异或 ----------x^y ------------把x和y按位求异或

 

>> ---------------右移 -----------x>>y -----------把x的各位右移y位

 

<< ---------------左移----------- x<<y ------------把x的各位左移y位

 

>>> --------------右移-----------x>>>y --------把x的各位右移y位,左边填0

 

int x = 3; //x等于二进制数的00000000 00000011

 

int y = 6; //y等于二进制数的 00000000 00000110

 

x&y //位与操作的结果 ------ 00000000 00000010

 

x |y //位或操作的结果 ------- 00000000 00000111

 

x^y //位异或操作的结果 ----- 00000000 00000101 

 

 

 

8.位运算符 

 

int x=-3;

 

~x;//-3的原码 :1}0000000-00000000-00000000-00000011

 

计算机中没有定义负数的表示形式,所有负数一般使用补码的形式表示,正数的原码,反码,补码都相同,负数的反码是除符号位(第一位)为1外,其他全部取反。 补码就是反码(+1)。其值是对反码再取反。

 

------3的反码 :1}1111111-11111111-11111111-11111100

 

-------3的补码 :1}1111111-11111111-11111111-11111101 (存在电脑)

 

-------3的取反 :0}0000000-00000000-00000000-00000010(值为2)

 

<<左移是将运算数的二进制 码整体左移指定位数。左移后的空位用0补充。

 

>>右移是将运算数的二进制 码整体右移指定位数。右移后的空位用符号位补充。 正数用0补充。负数用1补充。

 

-3的补码(2进制数据) :11111111-11111111-11111111-11111101 

 

x>>2//右移2位 :11111111-11111111-11111111-11111111 (值为-1)

 

x>>>2//无符号右移 (空位用0补充)

 

00111111-11111111-11111111-11111111 (1073741823)

 

位操作运算只适合用于 byte,short,int,char,long类型,而且原始数据不会变化。

 

(9).运算符的优先级 

 

优先级-------------------- 运算符--------------------------- 结合性 

 

1 . --------------------------[] () ; , --括号------------------左到右

 

2 -----------------++ ―― += ! ~ +(一元) -(一元) -----------右ð左

 

3 ----------------------------* / % ---算术-----------------左ð右

 

4 ----------------------+(二元) -(二元) -算术---------------左ð右

 

5------------------------- << >> >>>-----位移---------- 左ð右

 

6 ----------------< > <= >= instanceof --关系-----------左ð右

 

7 ------------------------= = != -----关系------------------左ð右

 

8 --------------------------& ------位逻辑--------------------左ð右

 

9 --------------------------^ -------位逻辑--------------------左ð右

 

10 ------------------------|----------位逻辑-----------------左ð右

 

11 ----------------------&& ---------逻辑---------------------左ð右

 

12-------------------------|| ----------逻辑----------------左ð右

 

13 ------------------------?:---------三元------------------- 右ð左

 

14-------------------*= /= %= += -= ---简洁表达式 -------右ð左

 

七。java循环语句。

if和switch的应用,

if:1,对具体的值进行判断;2,对区间判断;3,对运算结果是boolean类型的表达式进行判断;

switch:1,对具体的值进行判断;2,值的个数通常是固定的,对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高一点。

 


------if(){}else{}-----判断输入年份是否是闰年 

 

import java.util.Scanner;

 

public class Demo {

 

public static void main(String[] args) {

 

Scanner input = new Scanner(System.in);// 输入年份

 

System.out.println("请输入一个年份:");

 

int year = input.nextInt();// 获取年份

 

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {// 判断

 

System.out.println(year + "是闰年");// 是闰年输出

 

else {

 

System.out.println(year + "不是闰年");// 不是闰年输出

 

}

 

}

 

}

[2]--------------------- for()--------------打印几何图形

 

public class ForDemo {

 

// 打印等腰三角型

 

public static void show1(int row) {

 

for (int i = 1; i < row; i++) {// 打印空格

 

for (int j = 1; j <= row - i; j++) {

 

System.out.print(" ");

 

}

 

for (int x = 1; x <= i * 2 - 1; x++) {

 

System.out.print("*");// 打印星号

 

}

 

System.out.println();

 

}

 

}

 

// 打印菱形

 

public static void show2(int row) {

 

if (row >= 1) {

 

int x, y;

 

for (x = 1; x <= row; x++) {

 

for (y = 1; y <= row - x; y++)

 

System.out.print(" ");

 

for (y = 1; y <= 2 * x - 1; y++)

 

System.out.print("#");

 

System.out.println();

 

}

 

for (x = 1; x <= row; x++) {

 

for (y = 1; y <= x; y++)

 

System.out.print(" ");

 

for (y = 1; y <= 2 * (row - x) - 1; y++)

 

System.out.print("#");

 

System.out.println();

 

}

 

else {

 

System.out.println("您输入的行数错误,请重新输入");

 

}

 

}

 

// 打印直角三角形

 

public static void show3(int row) {

 

for (int i = 1; i <= row; i++) {

 

for (int x = 1; x < 1; x++)

 

System.out.print((char) (x + 96));

 

for (int y = i; y != 0; y--)

 

System.out.print((char) (y + 96));

 

System.out.println();

 

}

 

}

 

public static void main(String[] args) {

 

System.out.println("输出等腰三角形");

 

show1(7);

 

System.out.println("输出菱形");

 

show2(5);

 

System.out.println("输出直角三角形");

 

show3(5);

 

}

 

}

[3]------------------switch (){}-----多选一

 

public class SwitchDemo {

 

public static void main(String[] args) {

 

Scanner input = new Scanner(System.in);

 

System.out.println("你确定要关机吗?1待机 2关机 3重启 4取消");

 

int choice = input.nextInt();

 

switch (choice) {

 

// switch后面小括号变量类型只能为byte,short,int,char

 

case 1:

 

System.out.println("待机...");

 

break;// 跳出循环

 

case 2:

 

System.out.println("关机...");

 

break;

 

case 3:

 

System.out.println("重启...");

 

break;

 

default:

 

System.out.println("取消...");

 

break;

 

}

 

}

 

}

 

[4]------------while----输出1-100的和

 

public class WhileDemo {

 

public static void main(String[] args) {

 

int i = 1, sum = 0;

 

while (i <= 100) {

 

sum = i + sum;

 

i++;

 

}

 

System.out.println("1到100的和为:" + sum);

 

}

 

}

注意----------循环: 

break:跳出。 

  break作用的范围:要么是switch语句,要么是循环语句。 

  记住:当break语句单独存在时,下面不要定义其他语句,因为执行不到。    break跳出所在的当前循环。 

   如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成。 continue:继续。 

  作用的范围:循环结构。 

  continue:结束本次循环,继续下次循环。 

  如果continue单独存在时,下面不要有任何语句,因为执行不到

 

continue 继续 作用的范围:循环结构 作用:结束本次循环,继续下次循环 

 

break 跳出 作用的范围:只在switch语句和循环语句中使用

 

※当break语句单独存在时,下面不要定义其他语句,因为执行到break语句时跳出 后面的语句不会执行 

 

default 其他的意思 作用的范围:只在switch语句。只能放在最后

 

八。 函数---------------------------

 

函数就是方法。

 

格式-------修饰符 返回值类型 函数名(参数类型 形参){return 形参}

 

------------public-- int -getAge-(---)-----{return age} 

 

特点: 1.定义函数可以将功能代码进行封装

 

2.便于对该功能进行服用 

 

3.函数只有被调用才会被执行 

 

4.函数的出现提高了代码的复用性 

 

注意: 函数中只能调用函数,不能在函数内部定义函数。 定义函数时,函数的结果应该返回给调用者,交由调用者处理。

 

注意————————函数的重载 Overloading是一个类中多态性的一种表现

 

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

 

1.同一个类 2.同名 3.参数个数不同或参数类型不同 

 

4.函数重载和返回值类型无关 

 

//加法运算,两个整数的和 

 

public static int add(int a,int b) { return a+b; } 

 

//加法运算,两个小数的和public static double add(double a,double b) { return a+b; } 

 

5.java是严谨性语言,如果函数出现调用的不确定性,会编译失败 

 

九。 内存的划分------------------------




1.寄存器

 

2.本地方法区

 

3.方法区----------是存放虚拟机加载类的相关信息,如类、静态变量和常量

 

4.栈内存---------- 存放线程调用方法时存储局部变量表,操作,方法出口等与方法执行相关的信息(程序运行时,方法要进栈,否则,局部变量无法进栈)。 而且变量所属的作用域一旦结束,该变量就自动释放

 

5.堆内存-------- 存储的是数组和对象(其实数组就是对象);凡是new建立的,都在堆中

 

特点-------------

 

1.每一个实体都有首地址值 

 

2.堆内存中的每个变量都有默认初始化值,根据类型的不同而不行 


------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


0 0
原创粉丝点击