- 博客(19)
- 收藏
- 关注
原创 java中的三个代码块
代码块:在Java中, 使用{}括起来的代码被称为代码块 根据其位置和声明的不同可以分为 局部代码块: 局部位置,用于限定变量的生命周期s 构造代码块: 在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块an作用可以把多个构造方法中的共同代码放到一起,对对象进行初始化 静态代码块: 在类中的成员位置,用{}括起来的代码,只不过它用static修饰了 作用:一般是对类进行初始化。 面试题: 静态代码块,构造代码块,构造方法的执行顺序? 静态代码块–构造代码块–构造方法 静态代码
2020-07-03 10:43:02 149 1
原创 静态变量和局部变量分别与成员变量的区别
一.静态变量和成员变量的区别 1.所属不同 静态变量属于类,所以也称为类变量 成员变量属于对象,所以也称为实例变量(对象变量) 2.内存中位置不同 静态变量存储于方法区的静态区 成员变量存储于堆内存 3.内存出现时间不同 静态变量随着类的加载而加载,随着类的消失而消失 成员变量随着对象的创建而存在,随着对象的消失而消失 4.调用不同 静态变量可以通过类名调用,也可以通过对象调用. 成员变量只能通过对象名调用 二.局部变量和成员变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中
2020-07-01 09:57:17 155
原创 static关键字注意事项
static关键字注意事项 A:在静态方法中是没有this关键字的 如何理解呢? 静态是随着类的加载而加载,this是 随着对象的创建而存在。 静态比对象先存在。 B:静态方法只能访问静态的成员变量和静态的成员方法 静态方法: 静态成员变量:只能访问静态变量 静态成员方法:只能访问静态成员方法 非静态方法: 非静态成员变量:可以访问静态的。也可以访问非静态的 非静态成员方法:可以访问静态的成员方法,也可以访问非静态的成员方法。 简单记: 静态只能访问静态,非静态可以访问静态和非静态。 ...
2020-07-01 09:48:18 122
原创 static关键字
一.static的特点: (它可以修饰成员变量还可以修饰成员方法) A:随着类的加载而加载 回想main方法。 B:优先于对象存在 C:被类的所有对象共享 举例:咱们班级的学生应该共用同一个班级编号 其实这个特点也是在告诉我们什么时候使用静态? 如果某个成员变量是被所有对象共享的那么它就应该定义为静态的。举例: 饮水机(用静态絛饰) 水杯(不能用静态修饰) D:可以通过类名调用 其实它本身也可以通过对象名调用。 推荐使用类名调用。 静态修饰的内容一般我们称其为与类相关的,类成员。 二.对自己写的一个笔记 c
2020-07-01 09:41:36 106
原创 成员变量与局部变量的区别
成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在。随着方法的调用完毕而消朱D:初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值必须定义赋值然后才能使用。 注意:局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 ...
2020-06-28 11:42:31 136
原创 源码反码补码深入理解,很详细,通俗易懂(一道例题引入)
class Data{ public static void main(String[] args) { byte a=(byte)130; System.out.println(a);//答案:-126 } } 计算这个题我们首先要明白一个原则(源码补码反码的相互转换) 正数:源码反码补码都一样 负数的源码反码补码转换原则: 源码–反码:符号位不变,其余各位由0–1,1–0相互转换 反码–补码:符号位不变,在反码的基础上进行加一操作 130本身是一个int类型的整数(byte整数范围(-128-1.
2020-06-14 16:44:44 445
原创 把文本框的值转移到文本域案例
import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.ev
2020-06-14 10:37:43 483
原创 通过鼠标移动到按钮更改背景色案例
import java.awt.Button; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt
2020-06-14 10:31:26 485
原创 java设计模式之单例模式
单例模式概念:保证类存中只有一个对象 如何保证类在内存中只有一个对象呢? A:把构造方法私有 B:在成员位置自己创建一个对象 C:通过一个公共的方法提供访问 单例模式分为: 饿汉式:类一加载就创建对象 懒汉式:用的时候,才去创建对象 面试题:单例模式的思想是什么?请写一个代码体现 开发:饿汉式(是不会出问题的单例模式) 面试:懒汉式(可能会出现问题的单例模式) A:懒加载(延迟加载) B:线程安全问题: a:是否多线程环境 是 .
2020-06-12 09:49:38 83
原创 多线程常见的几道简单面试题
1:多线程有几种实现方案,分别是哪几种? 常见有两种。 (1)继承Thread类 (2)实现Runnable接口 扩展一种:实现Callable接口,这个需要和线程池结合才能使用 2:同步有几种方式,分别是什么? 两种 (1)同步代码块 (2)同步方法 3:启动一个线程是run()还是start()?他们的区别? start(); 区别: run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用 start():启动线程,并由JVM自动调用run()方法 4:sleep()和wait()方法的区别?
2020-06-11 10:16:26 125
原创 线程通信及唤醒机制
线程间通信问题: 不同种类的线程间针对同一资源的操作 例:通过设置线程(生产者)和获取线程(消费者)针对同一个学生对象进行操作 分析 资源类:Student 设置学生数据:SetThread(生产者) 获取学生数据:GetThread(消费者) 测试类:A生产者消费者问题 线程安全问题 1:是否多线程环境 2:是否有共享数据 3:是否有多条语句操作共享数据 解决方案 加锁 注意:不
2020-06-10 09:06:55 129
原创 java线程同步锁,死锁。
*1:同步代码块解决线程安全问题 *同步代码块格式: synchronized(对象) //这里的对象相当于就是一把锁,多个线程必须是同一把锁。 { (需要同步的代码);//让某个线程在执行的时候,别人不能执行。 } 对象: 我们可以随便创建一个对象试试。 需要同步的代码是哪些呢? 把多条语句操作共享数据的代码的那部分给包起来 。 *同步的特点好处和弊端 特点 多个线程 解决问题的时候要注意:
2020-06-09 10:51:45 134
原创 简单指针数组,数组指针的总结。
指针数组:表示数组的元素是地址 例: int* a[5]; 分解式定义 1:a[5]={&b,&c,&d,&e,&f}; 2:a前边是每个元素的类型 int* 3:所以这种数组这样定义为int* a[5]={&b,&c,&d,&e,&f};每个元素是地址 #include <stdio.h> #include <stdlib.h> int main(void) { int b=1, c=2, d=3, e
2020-06-08 17:08:41 142
原创 看病排队候诊(3个优先级)代码有少许不严谨。
/*consts.h / #include<string.h> #include<malloc.h> / malloc()等 / #include<stdio.h> / EOF(=^Z或F6),NULL / #include<stdlib.h> / atoi() //system/ #include<io.h> / eof() / #include<math.h> / floor(),ceil(),abs() */ #include&
2020-06-06 10:09:05 902
原创 线程调度与线程控制
/** 获取默认优先级 默认优先级为5 注意: 线程优先级范围是1-10 public final int getPriority()返回对象的优先级 如何设置线程对象的优先级呢? public final void setPriority(int newPriority)//更改线程优先级 */ //线程的调度 public class ThreadPriorityDemo { public static void main(String[] args) { ThreadPriority t
2020-06-06 10:05:03 152
转载 排序算法作为数据结构的重要部分,系统地学习一下是很有必要的。
1、排序的概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 排序分为内部排序和外部排序。 若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。 反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。 2、排序分类 八大排序算法均属于内部排序。如果按照策略来分类,大致可分为:交换排序、插入排序、选择排序、归并排序和基数排序。如下图所示: 3、算法分析 1.插入排序 *直接插入排序 *希尔排序 2.选择排
2020-06-03 10:52:57 638
原创 算法分硬币的三种方法
#include<stdio.h> #include<stdlib.h> #include<windows.h> int main(){ //单重循环 int x=0,y=0,z;//数据初始化 for(z=0;z<13;z++){ { y=(50-4z); x=3z; //根据公式变形而来的关系 printf(“一分有%d枚,两分有%d枚,五分有%d枚\n”,x,y,z);//输出每一种组合 } } system(“pause”); return 0; }
2020-06-03 10:36:56 663
原创 java JDK5新特性增强for
增强for是for循环的一种 格式: for(元素数据类型 变量:数组或者Coolection集合){ 使用变量即可,该变量就是元素 } 好处:简化了数组和集合的遍历 弊端:增强for的目标不能为null 如何解决呢?对增强for的目标先进行不为null的判断,然后在使用。 public class ForDemo { public static void main(String[] args) { // //定义一个int数组 .
2020-06-03 10:19:54 161
原创 java线程进程的简单概述
package a一.多线程的概述; /** 要先了解多线程,必须先了解线程,要了解线程,必须先了解进程,因为线程依赖于进程而存在 什么是进程呢? 通过计算机的任务管理器我们就看到进程的存在,通过观察只有运行的程序,才能出现进程。 所以进程就是正在运行的程序,是系统进行资源分配和调用的独立单位 ,每一个进程都有它自己的内存空间和系统资源 多进程有什么意义呢? 单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情 举例:一边玩游
2020-06-03 10:10:08 102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人