Java学习笔记(一)

这是我的第一篇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();
	}

在这里插入图片描述

成员变量和局部变量

作用范围
   成员变量作用于整个类中
   局部变量作用于函数中,或者语句中

在内存中的位置
   成员变量:在堆内存中,因为对象的存在,才在内存中存在
   局部变量:存在于栈内存中

  
  
  
  
  
  
   这次的笔记就到这里.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值