黑马程序员之----------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>、期待与您交流! -------
- 黑马程序员--Java基础之编程基础
- 黑马程序员---java基础之网络编程
- <<黑马程序员>>java基础之网络编程
- 黑马程序员之java编程基础1
- 黑马程序员之java编程基础2
- 黑马程序员之java编程基础3
- 黑马程序员之java编程基础4
- 黑马程序员之java编程基础5
- 黑马程序员之java编程基础6
- 黑马程序员之java编程基础7
- 黑马程序员之java编程基础8
- 黑马程序员之java编程基础9
- 黑马程序员---java基础之网络编程
- 黑马程序员--JAVA基础之网络编程
- 黑马程序员之----------Java编程基础
- 黑马程序员--Java基础之网络编程
- 黑马程序员-java基础之网络编程
- 黑马程序员 Java基础之网络编程
- 程序员小故事-注定献身给程序
- Ubuntu设置外接显示器分辨率
- 逗号操作符
- epoll ET模式服务器和客户端源码例子
- 博客搬家啦 https://crazygj.github.io/
- 黑马程序员之----------Java编程基础
- cisco忘记console口密码
- .NET应用架构设计—表模块模式与事务脚本模式的代码编写
- DSQLTools的使用介绍--实验报告
- UML之类图
- 使用Jersey框架创建RESTful Web Services
- 关于那些常见的坑爹的小bug(会持续更新)
- 医疗时鲜资讯:关注医疗未来新趋势(2)
- HDU 1869 六度分离