这是我的第一篇blog
经过了第一周的学习,在这里总结一下笔记…
配置环境变量
配置临时环境变量:
编译时配置路径set path;执行时set classpath
在配置classpath路径时,结尾不加分号;
.代表当前路径;
classpath先找这个,再去找当前路径;path先找当前路径,再去找这个
(set 后有分号才继续寻找)
可执行文件path;java文件classpath
多行注释中不能含有多行注释
字符串和任何数据相连接 最终都会变成字符串
% %动态获取
基本标识符
|:只要两边的有一个true结果就是true;都是false才是false
^:异或:两边同假,不同真
&和&&的特点:
&无论左边是真是假右边都运算
&&当左边为false时,右边不运算
|和||的特点:
|都运算
||左边出现true,右边不运算
左移<<:左移n位等价于乘以2的n次方
右移>>:右移n位等价于除以2的n次方(最高位由原有数据最高位而定 0补0 1补1)
而>>>:无论最高位是什么都用0补
1111-1111 1111-1111 1111-1111 1111-1010 = -6最高位为1时为负数
一个数异或同一个数两次结果还是那个数.
&15:二进制最低四位获取(一般在10进制转换成16进制时)(&7:10转8)
三元运算符:
好处:可以简化if else
坏处:因为是一个运算符,运算完必须要有一个结果
语句
switch:
语句选择只四种数据类型:byte short int char
case与default没有顺序
结束switch语句只有2种情况,遇到break,执行到switch语句结束
switch与if使用的选择:
如果对具体数值(符合条件)进行判断(不多)–switch(效率较高)
其他情况用if
while:先判断条件,只有条件满足才执行循环体
do while:先执行循环体,在判断条件。条件满足,再继续执行循环体
简单一句话:do while:无论条件是否满足。循环体至少执行一次
for(初始表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
作用域问题
只作为循环增量时用for,那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中 被释放
for和while可以进行互换
总结:
什么时候使用循环结构
当对某些语句执行很多次时
循环
无限循环的最简单表达形式:for(;;){} 与 while(true){}
累加思想:
通过变量记录循环操作后的结果。(参见2.java)
通过循环的形式,进行累加动作。
计数器思想:
通过一个变量记录著数据的状态变化
可通过循环完成
发现图形有很多行,每一行有好多列
要使用嵌套循环。原理;大圈套小圈
(外循环控制行数)
break跳的是所在循环
或者给循环标号,让break跳
continue:只能用于循环
结束本次循环,继续下次循环
记住:1.Break和continue语句作用的范围;
2.break和continue单独存在时,下面不能有语句,执行不到
函数
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2…)
{
执行语句;
return 返回值;
}
当函数运算后,没有具体的返回值时,这时返回值类型用一个特殊的关键字来标识:void
当函数的返回值类型是void时,函数中的return语句可以省略不写
如何定义一个函数?
1,既然函数是一个独立的功能,那么该功能的运算结果是什么先明确
因为这是在明确函数的返回值类型
2,再明确在在定义该功能的过程中是否需要未知的内容参与运算
因为这是在明确函数的参数列表(参数的类型和个数)
函数重载
概念:
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可
特点:
与返回值类型无关,只看参数列表
什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同时,那么这时候。就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个重名函数
(参数是有顺序的)
数组
- 定义:同一类型数据的集合(其实数组就是一个容器)
- 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素
- int[] x = new int[3];(new:开辟一个新的空间在堆)
x是数组类型(引用的三种数据类型之一)
栈:数据使用完毕自动释放
局部变量在栈里(定义在函数、循环上的变量)
X中存放的是地址 堆中默认值是0
堆内存:没人使用之后被视为垃圾,有垃圾回收机制,不定时会被自动清理
堆的3个特点:
1.内存基础值;
2.默认初始化值;
3.垃圾回收机制
数组与变量一个区别
操作数组常见error
获取数组中的元素:通常会用到遍历
数组中有一个属性可以直接获取到数组元素个数:length.
使用方式:数组名称.length
数组排序
选择排序:
内循环结束一次,最值出现在头角标位置上
冒泡排序:
相邻的两个元素进行比较,如果符合条件换位,最值出现在最后位
发现:无论什么排序都需要对满足条件的元素进行位置置换
所以可以吧这部分相同的代码提取出来,单独封装成一个函数
public static void swap(int[] arr,int a,int b)
{
int temp =arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
arrays.sort.(arr) //java中定义好的一种排序方式。开发中,对数组排序要使用该代码
十进制转换成十六进制
class test{
public static void main(String[] args)
{
toHex(60);
}
public static void toHex(int num)
{
char[] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};
//定义一个临时容器
char[] arr =new char[8];
int pos = arr.length;
while(num!=0)
{
int temp = num&15;
arr[--pos]=chs[temp];
num = num >>>4;
}
System.out.println("pos="+pos);
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]+",");
}
}
}
二维数组
System.out.println(arr.length) //打印二维数组的长度
System.out.println(arr[0].length) //打印二维数组的第一个一维数组的长度
面向对象
面向对象与面向过程
面向对象:三个特征:
封装、继承、多态(下一次笔记)
类和对象的关系
类就是:对现实生活中事物的描述
对象是:这类事物实实在在存在的个体
现实生活中的对象:张三、李四
想要描述:提取对象中的共性内容,对具体的抽象
描述时:这些对象的共性有:姓名、年龄、性别、学习java功能
映射到java中:描述就是class定义的类
具体对象就是对应java在堆内存中用new建立实体
//需求:描述汽车。描述事物其实就是在描述事物的属性和功能
//属性对应是类中变量,行为对应得是类中的函数(方法)
//其实定义类就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法)
class Car
{
//描述颜色
String color = "红色";
//描述轮胎数
int num = 4;
//运行行为
void run()
{
System.out.println(color+".."+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
//生产汽车。在java中通过new操作来完成
//其实就是在堆内存中产生一个实体
new Car();
Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象
//需求:将已有车的颜色改成蓝色。指挥该对象做使用。在java中指挥方式是:对象.对象成员
c.color = "blue";
c.run();
Car c1 = new Car();
c1.run();//red 4
}
//需求:汽车修配厂,对汽车进行改装,将来的车改成黑色三个轮胎
public static void show(Car c)
{
c.num = 3;
c.color = "black";
c.run();
}
成员变量和局部变量
作用范围
成员变量作用于整个类中
局部变量作用于函数中,或者语句中
在内存中的位置
成员变量:在堆内存中,因为对象的存在,才在内存中存在
局部变量:存在于栈内存中
这次的笔记就到这里.