1.1 建造者模式
【静态内部类的引用------Builder构建器】
《
public static class Builder{
private AlertDialog dialog;
public Builder(){
dialog = new AlertDialog();
}
/*
public void setIcon(int icon){
dialog.icon = icon;
}*/
public Builder setTitle(String title){
dialog.title = title;
return this;
}
public Builder setMessage(String message){
dialog.message = message;
return this;
}
public Builder setIcon(int icon){
dialog.icon = icon;
return this;
}
public AlertDialog create(){
return dialog;
}
}
》
【
Builder b= newAlertDialog.Builder();
AlertDialog dialog =b.setIcon(1000)
.setTitle("千锋")
.setMessage("我在加班")
.create();
System.out.println(dialog); //建造者模式
】
1.2 接口回调与事件监听
【1:
//监听器接口
public interface Listener {
//抽象方法,一点击就....
void onClick();
}
2:
public class MyListener implements Listener {
public void onClick() {
System.out.println("访问服务器");
}
}
3:
public class Button {
private Listener listener; //聚合、组合
public void setListener(Listener listener) {
this.listener = listener;
}
//模拟按键被用户手指点击触发,就去执行监听器的逻辑
public void drive(){
listener.onClick();//调用逻辑部件、监听器的onClick逻辑
}
}
4:测试
Button button = new Button();//视图 按钮
MyListener listener = new MyListener();//逻辑点击后该怎么做
Cat cat = new Cat();
button.setListener(listener);//逻辑组装到视图
button.drive();//驱动按钮,模拟用户点击
】
1.3 反射机制实现低耦合代码
【
1:
public class Human {
private Weapon weapon; //聚合,组合
public void setWeapon(Weapon weapon){
this.weapon = weapon;
}
public void attack(){
weapon.attack(); //多态,向上转型子类对象,调用从父类复//写的方法
}
}
2:
BufferedReader br = new BufferedReader(new FileReader("asad/config.txt"));
String line = br.readLine();
Class clz = Class.forName(line);
Weapon w = (Weapon)clz.newInstance();
Human h = new Human();
h.setWeapon(w);
h.attack();
】
1.4 回文字符判定
【
//上海自来水来自海上
//黄山落叶松叶落山黄
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
String line = new Scanner(System.in).nextLine();
//将字符串转为字符数组
char[] array = line.toCharArray();
boolean flag =true;
for(int i=0;i<array.length/2;i++){ //除以2可以进行优化
// System.out.println(array[i]);
if(array[i] !=array[array.length-i-1]){
flag=false;
break;
}
}//写一个判断用户输入是否回文程序
if(flag){
System.out.println("是回文");
}
else{
System.out.println("不是回文");
}
}
】
1.5 冒泡排序
【
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
int[] array ={2,8,1,9,5,7};
sort(array);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
public static void sort(int[] arr){//排序算法
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-1-j;i++){
//如果当前元素比右边的元素大
if(arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
】
1.6 选择排序
【
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
int[] array ={6,3,2,5,4,9,1};
sort(array);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
public static void sort(int[] arr){
for(int i=0;i<arr.length-1;i++){
int minIndex = i;//每次外层循环都把i作为默认最小值下标
//遍历默认最小值右边的子数组,遍历到最后
for(int j=i+1;j<arr.length;j++){
//如果扫描到的当前值比
if(arr[j] < arr[minIndex]){
minIndex = j;//最小值下标就改为当前元素的下标
}
}
if(minIndex != i){
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
}
】
1.7 插入排序
【
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
int[] array ={6,3,2,5,4,9,1};
sort(array);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
}
public static void sort(int[] arr){
//
for(int i=1;i<arr.length;i++){
//每一次循环先把插入的值拿出来,也就是将其值赋给一个临时变量,临时保存下
int temp = arr[i];
//往左扫描,左边无东西扫描时停止循环
int j;
for(j=i;j>0;j--){
if(arr[j-1]>temp){//如果扫描到的数字比要插入的数字大
//往右拨,确切说往右赋值一份,或者说右边的数的值=左边的数
arr[j] = arr[j-1];
}
else{//如果扫描到的数字比要插入的数字小
break;
}
}
arr[j] = temp;
}
}
】
1.8 二进制数
【倒序输出情况:
1.输入一个数,输出它的二进制(倒序) */
import java.util.Scanner;
public class Test8{
publicstatic void main(String[] args){
Scanners = new Scanner(System.in);
intnum = s.nextInt();
intyu = 0;
while(num>0){
yu= num%2;
num= num/2;
System.out.print(yu);
}
for(;n!=0;n/=2){
System.out.print(n%2);
}
}
}
】
【二进制顺序输出:
//二、让用户输入一个10进制数,打印出相应的二进制数(顺序)
public class Home2 {
public static void main(String[] args) {
int num = new Scanner(System.in).nextInt();
int ni=0;
int[] array = new int[50];
for(;num!=0;num/=2){
array[ni]=num%2;
ni++;
}
for(int i=ni-1;i>=0;i--){
System.out.print(array[i]);
}
}
}
】