java基础代码
1.转义字符的使用?
public class Demo{
public static void main(String[] args) {
//转义字符的使用
System.out.println("姓名:娜娜\n 性别:女\n 年龄:18\n");
System.out.println("123456\rabc");//输出:abc456原因:\r是回车键输出123456之后又回退到1之前所以输出abc的时候就会吧123覆盖掉
System.out.println("姓名\t\t性别\t\t年龄");
System.out.println("娜娜\t\t女\t\t20");
System.out.println('\\');//输出一个\
System.out.println('\'');//输出一个'
System.out.println("'");//输出一个'
System.out.println('"');//输出一个"
System.out.println('"');//输出一个"
}
}
2.强制转换数据类型时发生的特殊情况
public class Demo{
public static void main(String[] args) {
//byte型如果超出取值范围之后怎么搞
int i = 128;
int i1 = 198;
byte b1 = (byte)i;
byte b2 = (byte)i1;
System.out.println(b1);//b1=-128
System.out.println(b2);//b2=-58
}
}
对上述代码的解释:-128在byte类型中正好就是10000000
3.要求:有一个四位数字的会员卡号,使用“/”和“%”运算符分解获得会员卡各个位上的数字,将各个位上数字求和。3865
public class Demo15{
public static void main(String[] args){
int card=3865;
int ge=card%10;
int shi=card/10%10;
int bai=card/100%10;
int qian=card/1000;
int r=ge+shi+bai+qian;
System.out.println("结果是:"+r);
}
}
4.case穿透的使用:输出每个月份的天数
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入月份:");
int month = scan.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month + "月有31天");
case 2:
System.out.println(month + "月有28天");
case 4:
case 6:
case 9:
case 11:
System.out.println(month + "月有30天");
}
}
5.百元买白鸡问题
百钱买百鸡,公鸡3钱一个,母鸡2钱一个,小鸡三个一钱,问
能买多少个公鸡、母鸡、和小鸡?
public class Demo14 {
public static void main(String[] args) {
for (int x = 1; x <= 33; x++){
for (int y = 1; y <= 50; y++){
if (8*x + 5*y ==200){
System.out.println("公鸡有" + x +"个,母鸡有" + y + "个,小鸡有" + (100-x-y) + "个");
}
}
}
}
}
思路:
6.打印图形的问题
public class CauseTest {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数");
int n = scan.nextInt();
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n-i; j++){
System.out.print(" ");
}
for (int k = 1; k <= 2*i-1; k++){
System.out.print("*");
}
System.out.println();
}
}
}
打印上图中的第二个图像
public class CauseTest {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数");
int n = scan.nextInt();
//打印上半个图案
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n-i; j++){
System.out.print(" ");
}
for (int k = 1; k <= 2*i-1; k++){
System.out.print("*");
}
System.out.println();
}
//打印下半个图案
for (int i = n; i >=1; i--){
for (int j = 1; j <= n-i;j++){
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1;k++){
System.out.print("*");
}
System.out.println();
}
}
}
打印中间是空心的图像
public class CauseTest {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个整数");
int n = scan.nextInt();
//打印上半部分
for (int i = 1; i <= n; i++){
for (int j = 1; j <= n- i; j++){
System.out.print(" ");
}
for (int k = 1; k <= 2*i-1;k++){
if (k == 1 || k == 2*i-1 ){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
for (int i = n-1; i >= 1;i--){
for (int k = 1; k <= n - i; k++){
System.out.print(" ");
}
for (int j = 1; j <= 2*i-1;j++){
if (j == 1 || j == 2*i-1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
7.斐波那契数列前30项求和
public class CauseTest {
public static void main(String[] args){
int[] arr = new int[30];//总数
int sum = 0;
for (int i = 0; i < 30; i++){
if (i == 0 || i == 1){
arr[i] = 1;
sum += arr[i];
}else{
arr[i] = arr[i-1] + arr[i-2];
sum += arr[i];
}
}
System.out.println("前30项的和为:" + sum);
}
}
8.杨辉三角
打印杨辉三角的十行
public class CauseTest {
public static void main(String[] args){
int[][] arr = new int[10][10];
for (int i = 0; i < 10; i++){//控制行数
for (int j = 10-i; j >= 1; j--){
System.out.print(" ");
}
for (int j = 0; j <= i; j++){
if (j == 0 || j == i){
arr[i][j] = 1;
System.out.print(arr[i][j] + " ");
}else{
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
System.out.print(arr[i][j]+ " ");
}
}
System.out.println();
}
}
}
9.打印100以内的所有素数
//第一种方法:
public class CauseTest {
public static void main(String[] args){
for (int i= 2; i <= 100; i++){
boolean flag = true;
for (int j = 2; j <= Math.sqrt(i); j++){
if (i % j == 0){
flag = false;
break;
}
}
if (flag){
System.out.println(i);
}
}
}
}
//第二种方法:
//使用方法。
public class CauseTest {
public static void main(String[] args) {
for (int i = 2; i <=100; i++) {
if (prime(i)){
System.out.println(i);
}
}
}
public static boolean prime(int x){
for (int i = 1; i <= Math.sqrt(x); i++) {
if (x % i == 0){
return false;
}
}
return true;
}
}
10.比较三个数的大小
public class CauseTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in );
System.out.println("请输入三个数");
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
int max = a;
if (max < b ){
max = b;
}
if (max < c){
max = c;
}
System.out.println(max);
}
}
11.数组的扩容
public class Demo1 {
public static void main(String[] args) {
// 数组的复制
int[] arr1 = new int[]{5,6,9,8,4};
//1.创建比原数组长度长的数组
int[] arr2 = new int[arr1.length * 2];
//2.复制值
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
//3.地址赋给新数组
arr1 = arr2;
for (int i : arr2) {
System.out.println(i);
}
}
}
12.数组的插入
public class CauseTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] arr = new int[10];
arr[0] = 5;
arr[1] = 8;
arr[2] = 9;
arr[3] = 3;
arr[4] = 1;
int size = 5;
System.out.println("请输入你要插入的下标:");
int i = scan.nextInt();
System.out.println("请输入你要插入的元素:");
int n = scan.nextInt();
if (i >= 0 && i <= size){
for (int j = size; j > i; j--) {
arr[j] =arr[j-1];
}
arr[i] = n;
size++;
for (int i1 : arr) {
System.out.print(i1 + "\t");
}
}else{
System.out.println("输入有误,请重新输入。");
}
}
}
13.数组的删除
public class CauseTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] arr = new int[10];
arr[0] = 5;
arr[1] = 8;
arr[2] = 9;
arr[3] = 3;
arr[4] = 1;
int size = 5;//数组中总共的元素
System.out.println("请输入你要删除元素的位置:");
int pos = scan.nextInt();
if (pos >= 0 && pos < size){
for (int j = pos; j < size - 1; j++) {
arr[j] =arr[j+1];
}
arr[size-1] = 0;
size--;//删除之后数组中元素的个数也会变少
for (int i1 : arr) {
System.out.print(i1 + "\t");
}
}else{
System.out.println("输入有误,请重新输入。");
}
}
}
14.数组中的二分查找(注意:数组必须是有序的)
public static int binarySearch(int[] arr, int key){
int i = 0;
int j = arr.length-1;
while (i <= j ){
int mid = (i + j)/2;
if (key > arr[mid]){
i = mid + 1;
}else if(key < arr[mid]){
j = mid -1;
}else{
return mid;
}
}
return -1;
}
15.java中的排序算法
public class CauseTest {
public static void main(String[] args) {
int[] arr = new int[]{5,6,4,8,9,7,2,1,3};
selectSort(arr);
for (int i : arr) {
System.out.print(i);
}
}
//冒泡排序
public static void bubbleSort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//插入排序
public static void insertSort(int[] arr){
for (int i = 1; i < arr.length;i++){
int pos = i-1;
int t = arr[i];
while (pos >= 0 && arr[pos] > t){
arr[pos+1] = arr[pos];
pos--;
}arr[pos + 1] = t;
}
}
//选择排序
public static void selectSort(int[] arr){
for (int i = 0; i < arr.length-1; i++){
int min = i;
for (int j = i+1; j < arr.length; j++){
if (arr[min] > arr[j]){
min = j;
}
}if (min != i){
int t = arr[min];
arr[min] = arr[i];
arr[i] = t;
}
}
}
//希尔排序(等于一种特殊的插入排序 加上第一个for条件之后,剩下的代码就是插入排序代码中的1全改成gap就可以了)
public static void shellSort(int[] arr){
for (int gap = arr.length/2;gap >=1; gap = gap/2){
for (int i = gap; i < arr.length; i++){
int pos = i-gap;
int t = arr[i];
while (pos >= 0 && arr[pos] > t){
arr[pos+gap] = arr[pos];
pos--;
}arr[pos + gap] = t;
}
}
}
//快排
public static void quickSort(int[] arr,int start,int end){
int i = start;
int j = end;
int pivot = arr[start];
while (i < j){
//从后往前
while (i < j){
if (arr[j] > pivot){
j--;
}else{
arr[i] = arr[j];
i++;
break;
}
}
//从前往后
while (i < j){
if (arr[i] < pivot){
i++;
}else{
arr[j] = arr[i];
j--;
break;
}
}
}
arr[i] = pivot;
//判断左边是否有元素
if (start < i-1){
quickSort(arr, start, i-1);
}
//判断右边是否有元素
if (end > j+1){
quickSort(arr, j+1, end);
}
}
}
16利用阻塞队列解决生产者消费者问题
public class TestBlockingQueue {
public static void main(String[] args) {
BlockingDeque<String> queue = new LinkedBlockingDeque<String>(5);
Runnable consume = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 30; i++) {
String take;
try {
take = queue.take();
System.out.println(Thread.currentThread().getName() + "消费了" + take);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Runnable product = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 30; i++) {
try {
queue.put("面包" + i);
System.out.println(Thread.currentThread().getName() + "生产了" + i + "号面包");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
ExecutorService es = Executors.newFixedThreadPool(2);
es.submit(consume);
es.submit(product);
es.shutdown();
}
}